Come posso usare oggetti OCMock con il codice che chiama isKindOfClass?

voti
7

Mi piacerebbe provare un po 'di codice con OCMock.

Le interiora del codice chiedono [NSObject isKindOfClass]sull'oggetto finta che sto fornendo al codice, in questo modo:

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

Tuttavia, quando fornisco un finto OCMockObject-based creato in questo modo:

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

sembra che non passa il isKindOfClasstest.

Eventuali suggerimenti?

È pubblicato 29/01/2009 alle 02:17
fonte dall'utente
In altre lingue...                            


2 risposte

voti
7

La regola generale è che se si sta chiamando isKindOfClass:e non sta passando una delle classi di plist (ad esempio, NSString o NSNumber), si sta facendo nel modo sbagliato.

Se il metodo fa due o più cose diverse a seconda di quale classe suo argomento è, rend in diversi metodi, e testare ogni metodo separatamente.

Se il metodo fa una sola cosa, ma deve interagire con l'oggetto in modo diverso a seconda di quale classe lo è, allora:

  1. Fare un protocollo. (Protocolli in Obj-C sono chiamati “interfacce” in alcuni altri linguaggi OO, come Java.)
  2. Effettuare le molte classi sono tutti conformi al protocollo. Se necessario, utilizzare le categorie per aggiungere i metodi necessari dall'esterno.
  3. Rendere il metodo sotto controllo di prova per la conformità al protocollo, al posto della corrente isKindOfClass:di controllo.
  4. Rendere il metodo in prova utilizzare i metodi nel protocollo.
Risposto il 29/01/2009 a 03:20
fonte dall'utente

voti
2

Che dire:

    [[[mock stub] andReturnValue:OCMOCK_VALUE((BOOL) {YES})] isKindOfClass:[FancyClass class]];
Risposto il 06/05/2013 a 19:37
fonte dall'utente

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