无法存根方法([NSData initWithBase64EncodedString])
Cannot stub a method ([NSData initWithBase64EncodedString])
我是 Objective-C 和 OCMock 的新手。我创建了这个简单的测试并期望它通过,但它失败了:
-(void)testMock
{
id dataMock = [OCMockObject niceMockForClass:[NSData class]];
[[[dataMock stub] andReturn:dataMock] initWithBase64EncodedString:[OCMArg any]
options:[OCMArg any]];
NSData *ret = [dataMock initWithBase64EncodedString:@"dGVzdA=="
options:NSDataBase64DecodingIgnoreUnknownCharacters];
XCTAssertEqualObjects(dataMock, ret);
}
如您所见,我存根了一个方法并将其命令为 return dataMock
,但它 return 为 null:
Assertions: ((dataMock) equal to (ret)) failed:
("OCMockObject(NSData)") is not equal to ("(null)")
注意: 使用 init
而不是 initWithBase64EncodedString
进行测试,按预期工作并通过。
我正在使用 XCode 6.0.1 并为 iOS 8.0 编程。
我发现这是 OCMock 中著名的原语匹配问题。 options
在提到的方法中,取一个原语并且 [OCMArg any]
不匹配它。
所以现在我将使用确切的使用值:
[[[dataMock stub] andReturn:dataMock] initWithBase64EncodedString:[OCMArg any]
options:NSDataBase64DecodingIgnoreUnknownCharacters];
我是 Objective-C 和 OCMock 的新手。我创建了这个简单的测试并期望它通过,但它失败了:
-(void)testMock
{
id dataMock = [OCMockObject niceMockForClass:[NSData class]];
[[[dataMock stub] andReturn:dataMock] initWithBase64EncodedString:[OCMArg any]
options:[OCMArg any]];
NSData *ret = [dataMock initWithBase64EncodedString:@"dGVzdA=="
options:NSDataBase64DecodingIgnoreUnknownCharacters];
XCTAssertEqualObjects(dataMock, ret);
}
如您所见,我存根了一个方法并将其命令为 return dataMock
,但它 return 为 null:
Assertions: ((dataMock) equal to (ret)) failed:
("OCMockObject(NSData)") is not equal to ("(null)")
注意: 使用 init
而不是 initWithBase64EncodedString
进行测试,按预期工作并通过。
我正在使用 XCode 6.0.1 并为 iOS 8.0 编程。
我发现这是 OCMock 中著名的原语匹配问题。 options
在提到的方法中,取一个原语并且 [OCMArg any]
不匹配它。
所以现在我将使用确切的使用值:
[[[dataMock stub] andReturn:dataMock] initWithBase64EncodedString:[OCMArg any]
options:NSDataBase64DecodingIgnoreUnknownCharacters];