Frage

Ich versuche, einen Test für ein Verfahren zu schreiben, wo die Ausgabe auf einer timeIntervalSinceNow Rückgabewert der NSDate abhängt. Ich mag den Rückgabewert in meinen Tests angeben, so dass ich bestimmte Szenarien testen.

Ich habe eine wirklich harte Zeit dieses OCMock Objekt immer Rückkehr, was Ich mag würde. Hier ist mein Code:

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

Dies erzeugt eine "Fehler: erwartet Spezifizierer-Qualifizierer-Liste vor‚TypeOf" Fehlern

.

Alle Gedanken? Ich bin neu in ObjC, so dass alle anderen verwandten Tipps sind sehr geschätzt.

Danke.

War es hilfreich?

Lösung

Eigentlich ist es ein Compiler-Fehler, kein OCMock Fehler. Das hat etwas mit der Art und Weise zu tun, die OCMOCK_VALUE(t) Makro funktioniert. Es ist wie folgt definiert:

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

Der typeof () Richtlinie ist nicht Teil der C89, so stellen Sie sicher, dass Sie Ihre Compiler gesetzt haben -std=gnu89 oder std=gnu99 Flagge zu verwenden. Nach dem Apple-docs, wenn Sie es auf gnu89 äquivalent dies Compiler Default, was auch in Ordnung ist.

Dies ist wahrscheinlich die Ursache für Ihre Fehler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top