J'ai un test unitaire pour une méthode qui devrait appeler un bloc d'achèvement ou un bloc défaillant. Maintenant, je sais pour chaque cas que l'on devrait être appelé alors j'utilise STFail
dans le bloc qui ne devrait pas être invoqué.Comment tester si un bloc est appelé
Comment puis-je maintenant tester que le bloc qui doit être invoqué est réellement appelé?
C'est ma configuration:
NSString *parameter = @"foo";
[controller doSomethingWithParameter:parameter withcompletionBlock:
^(NSString *result)
{
// This block should be invoked
// Check if the result is correct
STAssertEquals(result, kSomeOKConstant, @"Result shout be 'kSomeOKConstant'");
} failedBlock:
^(NSString *errorMessage) {
STFail(@"No error should happen with parameter '%@'",parameter);
}];
Mais où puis-je faire cette assertion. Si je le fais après l'appel à 'doSomethingWithParameter' alors il sera réglé sur' NO' de toute façon, non? – Besi
@Besi non, une fois qu'il est défini dans le bloc, il restera sur YES même après que doSomethingWithBlock soit retourné. C'est la "magie" des variables __block. – dasblinkenlight
Pas moyen ?! Maintenant, je suis à la fois confus et excité :-) Je vais essayer, merci d'avance. – Besi