OCMock和Nocilla不兼容吗?

时间:2014-10-14 13:32:02

标签: objective-c ocmock nocilla

我试图在同一组单元测试中同时使用OCMock和Nocilla。我使用CocoaPods来安装它们,并使用

引用它们
#import <OCMock/OCMock.h>
#import <Nocilla/Nocilla.h>

但是当我尝试以下列方式使用Nocilla的.andReturn时(其中subscriptionData是NSData *):

stubRequest(@"GET", @"https://api.test.com/api/beaconinbox/subscriptions/list").andReturn(200).withBody(subscriptionData);

我收到一个看起来像这样的编译器错误:

  

/Users/ravi/GitHub/Mobile/ClinicalInbox/ClinicalInboxTests/ClinicalInboxTests.m:63:93:Property&#39; _andReturn&#39;没有找到类型为&#39; LSStubRequestDSL *&#39;

的对象

在我从代码中删除#import "<OCMock/OCMock.h>"之前,这种情况一直存在。然后我的所有测试都运行得很好。

是否已知与OCMock和Nocilla不兼容?我似乎无法在任何地方找到一个 - 实际上我已经看到了相反的情况 - 很多人在同一个测试框架中一直使用它们的例子。所以我必须假设我做错了什么,谁能告诉我什么?

2 个答案:

答案 0 :(得分:5)

OCMock确实定义了一个名为andReturn的宏,它有一个参数。如果Nocilla也使用了一个名为andReturn的东西,它只有一个参数,那就不相容了。如上所述,可以通过从OCMock中取消定义andReturn宏来避免这种情况。这显然意味着之后不可能使用OCMock语法的那部分。

答案 1 :(得分:0)

您可以使用标准方括号表示法,例如:

[stubRequest(@"GET", myURL) andReturn](200).withBody(body);

丑陋,但确实有效。