我正在使用 OCMock 来帮助我正在使用 Xcode 为 iPad 应用程序进行的测试驱动开发。我有这样的测试代码:
id mock = [OCMockObject mockForProtocol:@protocol(SomeProtocol)];
Vector direction = { 1.0f, 2.0f, 3.0f };
[[mock expect] setDirection:direction];
当我尝试编译时,我收到如下警告和错误:
warning: multiple methods named 'setDirection:' found
error: sending'Vector' to parameter of incompatible type
'UISwipeGestureRecognizerDirection' (aka 'enum UISwipeGestureRecognizerDirection')
很明显,编译器无法确定 mock 应该是什么类型的对象。我不确定如何指定它应该处理来自 SomeProtocol 协议(protocol)的 setDirection 方法,而不是来自另一个类的 setDirection 方法。
如何才能成功构建这样的测试用例?
最佳答案
使用类型转换限定模拟将消除歧义:
[(id<SomeProtocol>)[mock expect] setDirection:direction];
关于ocmock - 编译器对模拟对象感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14421054/