iOS unité de test: Comment créer/mettre à jour/examiner firstResponder?

Comment écrivez-vous des premiers intervenants des tests unitaires?

Je suis en train d'écrire un test pour confirmer qu'une méthode active pour le prochain champ de texte. controller est un descendant de UIViewController. Mais cette phase exploratoire test échoue:

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

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

La première ligne entraîne l'affichage d'être chargé de façon à ce que ses points de vente sont en place. Les champs de texte sont non-nulle. Mais le test ne passe jamais.

Je devine que becomeFirstResponder ne définit pas les premiers à avoir répondu tout de suite, mais les horaires pour plus tard. Donc, il y a une bonne façon d'écrire un test unitaire contre elle?

Tirant réponse de commentaire à accepté de répondre... Laisser les choses s'exécuter pendant un court laps de temps:

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

J'ai trouvé aussi j'ai besoin de créer un UIWindow et de la baisse de la vue du contrôleur de vue, comme indiqué dans la plus upvoted réponse.

OriginalL'auteur Jon Reid | 2011-05-21