Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c OCMock和Nocilla不兼容吗?_Objective C_Ocmock_Nocilla - Fatal编程技术网

Objective c OCMock和Nocilla不兼容吗?

Objective c OCMock和Nocilla不兼容吗?,objective-c,ocmock,nocilla,Objective C,Ocmock,Nocilla,我试图在同一组单元测试中同时使用OCMock和Nocilla。我使用CoCoapod来安装它们,并使用 #import <OCMock/OCMock.h> #import <Nocilla/Nocilla.h> 我得到一个编译器错误,如下所示: /Users/ravi/GitHub/Mobile/ClinicalInbox/ClinicalInboxTests/ClinicalInboxTests.m:63:93:在“LSStubRequestDSL*”类型的对象上找不

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

#import <OCMock/OCMock.h>
#import <Nocilla/Nocilla.h>
我得到一个编译器错误,如下所示:

/Users/ravi/GitHub/Mobile/ClinicalInbox/ClinicalInboxTests/ClinicalInboxTests.m:63:93:在“LSStubRequestDSL*”类型的对象上找不到属性“\u andReturn”

直到我从代码中删除
#import”“
,它才会消失。然后我所有的测试都能完美运行


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

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

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

您可以使用标准方括号表示法来使用这两种语法,例如:

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

难看,但它可以工作。

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

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

丑陋,但它可以工作。

也可以通过在导入OCMock和Nocilla之间放置一个
#undef andReturn
来“修复”错误。这表明两个库可能不兼容。也可以通过在导入OCMock和Nocilla之间放置一个
#unde andReturn
来“修复”错误。这表明这两个库可能不兼容。我同意。我只是对这种不兼容感到惊讶,因为我看到了这么多人同时使用这些库的例子。我想,使用宏实现您的行为是一个不幸的副作用,但我理解这两个库为什么都这么做。我同意。我只是对这种不兼容感到惊讶,因为我看到了这么多人同时使用这些库的例子。我想,使用宏实现您的行为是一个不幸的副作用,但我理解这两个库为什么都这么做。