Rob*_*Rob 3 tdd unit-testing ocmock ios7 xctest
我有一个方法,我需要存根.该方法的形式如下:
BOOL myMethodWithError:(*__autoreleasing *NSError)error;
Run Code Online (Sandbox Code Playgroud)
所以我嘲笑了这个对象并试图通过"错误"返回一个零.我把它编码如下.
id mockMyObject = [OCMockObject mockForClass:[MyObject class]];
BOOL retVal = YES;
NSError *error = nil;
[[[mockMyObject stub] andReturn:OCMOCK_VALUE(retVal)] myMethodWithError:&error];
Run Code Online (Sandbox Code Playgroud)
运行测试并运行模拟对象时,错误引用ID似乎会更改.所以模拟抛出一个异常:
OCMockObject [MyObject]:调用的预期方法:myMethodWithError:0xbfffca78
我尝试了许多不同的方法,但每次将错误对象传递给导致模拟对象抛出错误的方法时,指针值似乎都会改变.
我只需要根据参数的pass-by-reference值来测试我的业务规则,但我似乎无法让mock或test对象合作.
在此先感谢,任何帮助将不胜感激.
除了Ben在他的回答中提到的解决方案(我只测试了一个ignoringNonObjectArgs
,并且它工作正常),我更喜欢使用[OCMArg anyPointer]
适当的演员:
[[[myMock stub] andReturn:something] someMethod:(NSError * __autoreleasing *)[OCMArg anyPointer]];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2198 次 |
最近记录: |