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