Cum pot folosi obiecte OCMock cu un cod care apelează isKindOfClass?

voturi
7

Aș dori să testați un cod cu OCMock.

Măruntaiele codului fac apel [NSObject isKindOfClass]la obiect bate joc eu sunt furnizarea de la codul, astfel:

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

Cu toate acestea, atunci când am oferi o mostră OCMockObject pe bază de creat ca aceasta:

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

se pare că nu trece isKindOfClasstestul.

Orice sugestii?

Întrebat 29/01/2009 la 02:17
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
7

Regula generală este că , dacă te cheamă isKindOfClass:și tu nu te trece una din clasele Plist ( de exemplu, NSString sau NSNumber), ce faci greșit.

Dacă metoda are două sau mai multe lucruri diferite, în funcție de care clasa de argumentul său este, sfasiem în mai multe metode, și testați fiecare metodă separat.

Dacă metoda face un singur lucru, dar trebuie să interacționeze cu obiectul diferit în funcție de clasa de care este, atunci:

  1. Asigurați-un protocol. (Protocoale în Ob-C sunt denumite „interfețe“ în alte limbi OO, cum ar fi Java.)
  2. Faceți mai multe clase sunt toate conforme cu protocolul. Dacă este necesar, utilizați categorii pentru a adăuga metodele necesare din exterior.
  3. Asigurați -vă metoda de verificare sub test pentru conformitatea cu protocolul, în locul actualului isKindOfClass:cecului.
  4. Asigurați-vă metoda de testat utilizați metodele în protocol.
Publicat 29/01/2009 la 03:20
sursa de către utilizator

voturi
2

Ce ziceti:

    [[[mock stub] andReturnValue:OCMOCK_VALUE((BOOL) {YES})] isKindOfClass:[FancyClass class]];
Publicat 06/05/2013 la 19:37
sursa de către utilizator

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