OCMock无法存储类别方法

时间:2014-07-09 15:42:08

标签: ios objective-c ocmock

我尝试使用NSMutableURLConnection的模拟,但OCMock不想要在NSHTTPURLRequestNSMutableURLConnection中声明的存根方法。

id requestMock = OCMClassMock([NSMutableURLRequest class]);
OCMStub([requestMock setHTTPBody]);

编译器不接受第二行。我得到了#ARC;语义问题:没有已知的选择器实例方法' setHTTPBody'。"

编译器允许我存根HTTPBody(而不是setHTTPBody),但它永远不会被调用。

在这种情况下,任何人都知道如何获得工作存根使编译器满意吗?

1 个答案:

答案 0 :(得分:5)

方法名称为setHTTPBody :(末尾有冒号,表示参数)。冒号是方法名称的重要组成部分。编译错误是准确的;你需要使用正确的方法名称。

你正在使用一个很好的类mock,它将为setHTTPBody提供一个空的实现:它不会做任何事情(不会存储数据),所以调用它对使用访问器的其他代码没有帮助。您可以尝试通过创建一个非好的模拟来找出调用哪些方法,这将为任何意外的方法抛出异常,并通过反复试验来找到真正需要的方法。或者,也许创建一个常规的NSMutableURLRequest对象,并从中创建一个局部模拟,只需要修改你需要改变的方法,但只留下其余的行为。