iOS unit test: Como configurar / atualizar, testar / examinar firstResponder?

Como você escreve testes de unidade de resposta automática?

Estou tentando escrever um teste para confirmar que um método avança o foco para o próximo campo de texto.controller é um descendente deUIViewController. Mas este teste exploratório falha:

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

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

A primeira linha faz com que a exibição seja carregada para que suas saídas estejam no lugar. Os campos de texto são nulos. Mas o teste nunca passa.

Suponho quebecomeFirstResponder não define o primeiro respondedor imediatamente, mas o programa para mais tarde. Então, existe uma boa maneira de escrever um teste de unidade contra ele?

Puxando a resposta do comentário na resposta aceita… Deixe as coisas correrem por um curto período de tempo:

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

Descobri também que preciso criar uma UIWindow e soltar a visualização do controlador de exibição, conforme declarado na resposta mais votad

questionAnswers(3)

yourAnswerToTheQuestion