Domanda

Sto cercando di scrivere un test per un metodo in cui l'output dipende dal valore di ritorno timeIntervalSinceNow di un NSDate. Vorrei specificare il valore di ritorno nei miei test in modo da poter testare determinati scenari.

Sto davvero facendo fatica a ottenere questo oggetto OCMock restituendo quello che mi piacerebbe. Ecco il mio codice:

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.");

Questo genera un errore "quot: lista specificatori-qualificatori previsti prima di" tipo di " di errore.

Qualche pensiero? Sono nuovo di ObjC, quindi qualsiasi altro suggerimento correlato è molto apprezzato.

Grazie.

È stato utile?

Soluzione

In realtà, si tratta di un errore del compilatore, non di un errore OCMock. Ciò ha a che fare con il modo in cui funziona la macro OCMOCK_VALUE (t) . È definito come:

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

La direttiva typeof () non fa parte di C89, quindi assicurati di aver impostato il tuo compilatore per l'uso - std = gnu89 o std = gnu99 . Secondo i documenti di Apple, se lo si imposta su predefinito del compilatore questo equivale a gnu89, che va bene anche.

Questa è probabilmente la causa del tuo errore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top