我试图在同一组单元测试中同时使用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不兼容?我似乎无法在任何地方找到一个 - 实际上我已经看到了相反的情况 - 很多人在同一个测试框架中一直使用它们的例子。所以我必须假设我做错了什么,谁能告诉我什么?
答案 0 :(得分:5)
OCMock确实定义了一个名为andReturn
的宏,它有一个参数。如果Nocilla也使用了一个名为andReturn
的东西,它只有一个参数,那就不相容了。如上所述,可以通过从OCMock中取消定义andReturn
宏来避免这种情况。这显然意味着之后不可能使用OCMock语法的那部分。
答案 1 :(得分:0)
您可以使用标准方括号表示法,例如:
[stubRequest(@"GET", myURL) andReturn](200).withBody(body);
丑陋,但确实有效。