Pregunta

Estoy tratando de escribir una prueba para un método donde la salida depende del valor de retorno timeIntervalSinceNow de un NSDate. Me gustaría especificar el valor de retorno en mis pruebas para poder probar ciertos escenarios.

Me está costando mucho conseguir que este objeto OCMock devuelva lo que me gustaría. Aquí está mi código:

id mock = [OCMockObject mockForClass:[NSDate class]];
NSTimeInterval t = 20.0;
[[[mock stub] andReturnValue:OCMOCK_VALUE(t)] timeIntervalSinceNow];
STAssertEquals([mock timeIntervalSinceNow], 20.0, @"Should be eql.");

Esto genera un " error: especificador-calificador-lista esperado antes de 'typeof " error.

¿Algún pensamiento? Soy nuevo en ObjC, por lo que cualquier otro consejo relacionado es muy apreciado.

Gracias.

¿Fue útil?

Solución

En realidad, es un error del compilador, no un error OCMock. Esto tiene algo que ver con la forma en que funciona la macro OCMOCK_VALUE (t) . Se define como:

#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]

La directiva typeof () no es parte de C89, así que asegúrate de haber configurado tu compilador para que use el indicador std = gnu89 o std = gnu99 . De acuerdo con los documentos de Apple, si lo configuras en Compiler Default esto es equivalente a gnu89, lo cual también está bien.

Esta es probablemente la causa de su error.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top