テストしているコードには、NSPredicateがあり、配列をフィルタリングしています。
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"status == %d || status == %d", FVFileReadyStatus, FVFileWaitingStatus];
[myArray filterUsingPredicate:predicate];
モックを返すメソッドがあり、最終的にはに追加されmyArray
ます。 FVFileStatus
typedef列挙型です。私は述語を使用しているので、述語はを呼び出しvalueForKey
ているので、それをスタブする必要があります:
-(id)mockFVFileHandleWithStatus:(FVFileStatus)status {
id mock = [OCMockObject mockForClass:[FVFileHandle class]];
[[[mock stub] andReturnValue:OCMOCK_VALUE(status)] valueForKey:[OCMArg checkWithSelector:@selector(isEqualToString:) onObject:@"status"]];
return mock;
}
テストを実行すると、フィルターで失敗します。取得しNSInvalidArgumentException - Reason: Return value does not match method signature
ます。
NSPredicateで動作するように、スタブを設定する方法がわかりません。
誰か助けてもらえますか?