沒有在我測試的代碼,我有一個NSPredicate,我過濾的數組:OCMock valueForKey與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一起使用。
任何人都可以幫忙嗎?
我敢肯定,你不需要使用 - [OCMArg checkWithSelector:],並可以使用字符串作爲-valueForKey:參數。 – Greg