¿Cómo puedo usar objetos OCMock con código que llama a KindOfClass?

votos
7

Me gustaría probar algunos códigos con OCMock.

Las entrañas del código están llamando [NSObject isKindOfClass]al objeto simulado que estoy proporcionando al código, así:

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

Sin embargo, cuando proporciono un simulacro basado en OCMockObject creado así:

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

parece que no pasa la isKindOfClassprueba.

¿Alguna sugerencia?

Publicado el 29/01/2009 a las 02:17
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
7

La regla general es que si está llamando isKindOfClass:y no está aprobando una de las clases plist (por ejemplo, NSString o NSNumber), lo está haciendo mal.

Si el método hace dos o más cosas diferentes dependiendo de qué clase es su argumento, divídalo en varios métodos y pruebe cada método por separado.

Si el método solo hace una cosa, pero tiene que interactuar con el objeto de manera diferente según la clase que sea, entonces:

  1. Haz un protocolo. (Los protocolos en Obj-C se llaman "interfaces" en algunos otros lenguajes de OO, como Java).
  2. Haga que todas las clases se ajusten al protocolo. Si es necesario, use categorías para agregar los métodos necesarios desde el exterior.
  3. Haga que el método esté bajo verificación de prueba para verificar el cumplimiento del protocolo, en lugar de la isKindOfClass:verificación actual .
  4. Haga que el método bajo prueba use los métodos en el protocolo.
Respondida el 29/01/2009 a las 03:20
fuente por usuario

votos
2

Qué pasa:

    [[[mock stub] andReturnValue:OCMOCK_VALUE((BOOL) {YES})] isKindOfClass:[FancyClass class]];
Respondida el 06/05/2013 a las 19:37
fuente por usuario

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