質問

出力が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と同等であり、これも問題ありません。

これはおそらくエラーの原因です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top