Comment puis-je utiliser des objets OCMock avec le code qui appelle isKindOfClass?

voix
7

Je voudrais tester un code avec OCMock.

Les entrailles du code appellent [NSObject isKindOfClass]l'objet simulé je fournir au code, comme ceci:

if ([object isKindOfClass:[FancyClass class]]) { ...}

Cependant, quand je donne un simulacre basé sur OCMockObject créé comme ceci:

mock = [OCMockObject mockForClass:[FancyClass class]];

il semble que cela ne passe pas le isKindOfClasstest.

Aucune suggestion?

Créé 29/01/2009 à 02:17
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
7

La règle générale est que si vous appelez isKindOfClass:et que vous n'êtes pas passer l' une des classes plist (par exemple, NSString ou NSNumber), vous faites fausse route.

Si la méthode fait deux ou plusieurs choses différentes selon la classe de son argument est Déchirez dans des méthodes multiples et tester chaque méthode séparément.

Si la méthode ne fait qu'une chose, mais doit interagir avec l'objet différemment selon la classe qu'il est, alors:

  1. Faire un protocole. (Protocoles en Obj-C sont appelées « interfaces » dans d'autres langages OO, tels que Java.)
  2. Faire les nombreuses classes sont tous conformes au protocole. Le cas échéant, utiliser des catégories pour ajouter les méthodes nécessaires à l'extérieur.
  3. Faire la méthode sous contrôle test de conformité au protocole, à la place du courant isKindOfClass:chèque.
  4. Faites la méthode à l'essai utiliser les méthodes dans le protocole.
Créé 29/01/2009 à 03:20
source utilisateur

voix
2

Qu'en est-il de:

    [[[mock stub] andReturnValue:OCMOCK_VALUE((BOOL) {YES})] isKindOfClass:[FancyClass class]];
Créé 06/05/2013 à 19:37
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more