質問
出力がNSDateのtimeIntervalSinceNowの戻り値に依存するメソッドのテストを作成しようとしています。特定のシナリオをテストできるように、テストで戻り値を指定したいと思います。
このOCMockオブジェクトが欲しいものを返すのに苦労しています。これが私のコードです:
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.");
これは、「typeof」の前に" error:expected specifier-qualifier-listを生成します;エラー。
考えはありますか?私はObjCが初めてなので、他の関連するヒントは大歓迎です。
ありがとう。
解決
実際には、OCMockエラーではなく、コンパイラエラーです。
これは、 OCMOCK_VALUE(t)
マクロの動作と関係があります。次のように定義されます。
#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]
typeof()ディレクティブはC89の一部ではないため、- std = gnu89
または std = gnu99
フラグを使用するようにコンパイラを設定してください。 Appleのドキュメントによると、 Compiler Default
に設定した場合、これはgnu89と同等であり、これも問題ありません。
これはおそらくエラーの原因です。
所属していません StackOverflow