Jak mohu použít OCMock objekty s kódem, který volá isKindOfClass?

hlasů
7

Chtěl bych vyzkoušet nějaký kód s OCMock.

Na vnitřnosti kódu volají [NSObject isKindOfClass]na předstíranou objekt Jsem poskytující kódu, tak jako:

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

Nicméně, když jsem poskytují OCMockObject založené vysmíval je vytvořen takto:

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

zdá se, že to neprojde isKindOfClasstestem.

Nějaké návrhy?

Položena 29/01/2009 v 02:17
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
7

Obecným pravidlem je, že pokud voláte isKindOfClass:a nejste absolvování jednoho z PLIST tříd (např NSString nebo NSNumber), Neděláte to špatně.

V případě, že metoda provádí dva nebo více různých věcí v závislosti na třídě je její argument, protrhl ji do několika metod, a testovat jednotlivé metody samostatně.

Pokud metoda dělá jen jednu věc, ale má k interakci s objekt odlišně v závislosti na třídě je pak:

  1. Udělejte si protokol. (Protokoly v Obj-C jsou nazývány „rozhraní“ v některých jiných OO jazyků, jako je Java).
  2. Provést mnoho tříd všichni jsou v souladu s protokolem. V případě potřeby použijte kategorie přidat potřebné metody zvenčí.
  3. Učinit metodu pod zkušebním šekem souladu s protokolem, na místě současného isKindOfClass:šeku.
  4. Aby se způsob podle testu pomocí metod v protokolu.
Odpovězeno 29/01/2009 v 03:20
zdroj uživatelem

hlasů
2

Co takhle:

    [[[mock stub] andReturnValue:OCMOCK_VALUE((BOOL) {YES})] isKindOfClass:[FancyClass class]];
Odpovězeno 06/05/2013 v 19:37
zdroj uživatelem

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