1

我试图在同一组单元测试中同时使用 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:在“LSStubRequestDSL *”类型的对象上找不到属性“_andReturn”

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

是否存在与 OCMock 和 Nocilla 的已知不兼容性?我似乎在任何地方都找不到——事实上我看到的恰恰相反——很多人一直在同一个测试框架中使用两者的例子。所以我必须假设我做错了什么,谁能告诉我什么?

4

2 回答 2

5

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

于 2014-10-29T15:14:38.073 回答
0

您可以通过使用标准方括号表示法来使用两者,例如:

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

丑陋,但它的工作原理。

于 2015-12-12T19:32:06.853 回答