ile bir BOOL döndüren bir yöntem saplama OCMock 1.70 kullanıyorum ve bir BOOL değeri döndüren basit bir yöntem alayında bir sorun yaşıyorum. İşte kodum:OCMock
@interface MyClass : NSObject
- (void)methodWithArg:(id)arg;
- (BOOL)methodWithBOOLResult;
@end
@implementation MyClass
- (void)methodWithArg:(id)arg {
NSLog(@"methodWithArg: %@", arg);
}
- (BOOL)methodWithBOOLResult {
NSLog(@"methodWithBOOLResult");
return YES;
}
@end
- (void)testMock {
id real = [[[MyClass alloc] init] autorelease];
[real methodWithArg:@"foo"];
//=> SUCCESS: logs "methodWithArg: foo"
id mock = [OCMockObject mockForClass:[MyClass class]];
[[mock stub] methodWithArg:[OCMArg any]];
[mock methodWithArg:@"foo"];
//=> SUCCESS: "nothing" happens
NSAssert([real methodWithBOOLResult], nil);
//=> SUCCESS: logs "methodWithBOOLResult", YES returned
BOOL boolResult = YES;
[[[mock stub] andReturn:OCMOCK_VALUE(boolResult)] methodWithBOOLResult];
NSAssert([mock methodWithBOOLResult], nil);
//=> FAILURE: raises an NSInvalidArgumentException:
// Expected invocation with object return type.
}
Neyi yanlış yapıyorum? - Özellikle NSNumber
andReturnValue:
herhangiNSValue
kabul eder:
OCMock'un daha yeni sürümleri OCMOCK_VALUE'nin sabitler üzerinde de çalışmasına izin vermelidir; OCMOCK_VALUE (NO) '' '' 'NO''' ve' '' (NO) '' '' 'tüm çalışması gerekir. –