Objective c 无法存根方法([NSData initWithBase64EncodedString])
我是Objective-C和OCMock的新手。我创建了这个微不足道的测试,并期望它通过,但它失败了:Objective c 无法存根方法([NSData initWithBase64EncodedString]),objective-c,ocmock,Objective C,Ocmock,我是Objective-C和OCMock的新手。我创建了这个微不足道的测试,并期望它通过,但它失败了: -(void)testMock { id dataMock = [OCMockObject niceMockForClass:[NSData class]]; [[[dataMock stub] andReturn:dataMock] initWithBase64EncodedString:[OCMArg any] options:[OCMArg any]];
-(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);
}
如您所见,我存根了一个方法并命令它返回dataMock
,但它返回null:
Assertions: ((dataMock) equal to (ret)) failed:
("OCMockObject(NSData)") is not equal to ("(null)")
注意:使用init
而不是initWithBase64EncodedString
进行测试,工作正常并通过
我正在使用XCode 6.0.1并为iOS 8.0编程。我发现这是OCMock中匹配原语的著名问题<代码>选项在上述方法中,采用一个原语,
[OCMArg any]
与之不匹配
所以现在我要用精确的使用值:
[[[dataMock stub] andReturn:dataMock] initWithBase64EncodedString:[OCMArg any]
options:NSDataBase64DecodingIgnoreUnknownCharacters];
我发现这是OCMock中匹配原语的著名问题<代码>选项在上述方法中,采用一个原语,
[OCMArg any]
与之不匹配
所以现在我要用精确的使用值:
[[[dataMock stub] andReturn:dataMock] initWithBase64EncodedString:[OCMArg any]
options:NSDataBase64DecodingIgnoreUnknownCharacters];