Prueba de la unidad iOS: ¿Cómo configurar / actualizar, te / examinar firstResponder?

¿Cómo se escriben las primeras pruebas de unidad de respuesta?

Estoy tratando de escribir una prueba para confirmar que un método avanza el foco al siguiente campo de texto. @controller es descendiente deUIViewController. Pero esta prueba exploratoria falla:

- (void)testFirstResponder
{
    [controller view];
    [[controller firstTextField] becomeFirstResponder];

    STAssertTrue([[controller firstTextField] isFirstResponder], nil);
}

La primera línea hace que la vista se cargue para que sus salidas estén en su lugar. Los campos de texto no son nulos. Pero la prueba nunca pasa.

Supongo quebecomeFirstResponder no configura el primer respondedor de inmediato, pero lo programa para más tarde. Entonces, ¿hay una buena manera de escribir una prueba unitaria contra ella?

Pulsando la respuesta del comentario en la respuesta aceptada ... Deje que las cosas funcionen por poco tiempo:

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];

También descubrí que necesito crear una UIWindow y colocar la vista del controlador de vista en ella, como se indica en la respuesta más votada.

Respuestas a la pregunta(3)

Su respuesta a la pregunta