Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 无法存根方法([NSData initWithBase64EncodedString])_Objective C_Ocmock - Fatal编程技术网

Objective c 无法存根方法([NSData initWithBase64EncodedString])

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]];

我是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);
}
如您所见,我存根了一个方法并命令它返回
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];