Question

J'essaie d'écrire un test pour une méthode dont la sortie dépend de la valeur de retour timeIntervalSinceNow de NSDate. J'aimerais spécifier la valeur de retour dans mes tests pour pouvoir tester certains scénarios.

J'ai beaucoup de mal à faire en sorte que cet objet OCMock retourne ce que je voudrais. Voici mon code:

id mock = [OCMockObject mockForClass:[NSDate class]];
NSTimeInterval t = 20.0;
[[[mock stub] andReturnValue:OCMOCK_VALUE(t)] timeIntervalSinceNow];
STAssertEquals([mock timeIntervalSinceNow], 20.0, @"Should be eql.");

Ceci génère une "erreur: liste de qualificateur de qualificateur attendue avant" typeof ". erreur.

Des pensées? ObjC étant nouveau pour moi, tous les conseils connexes sont grandement appréciés.

Merci.

Était-ce utile?

La solution

En fait, il s’agit d’une erreur du compilateur, pas d’une erreur OCMock. Cela a quelque chose à voir avec le fonctionnement de la macro OCMOCK_VALUE (t) . Il est défini comme:

#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]

La directive typeof () ne faisant pas partie de C89, assurez-vous donc que votre compilateur a été configuré pour utiliser - std = gnu89 ou std = gnu99 . Selon la documentation Apple, si vous le définissez sur Compilateur par défaut , cela équivaut à gnu89, ce qui convient également.

Ceci est probablement la cause de votre erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top