Ios OCMStub中无法识别方法“andReturn”

Ios OCMStub中无法识别方法“andReturn”,ios,ocmock,xcode6.3,Ios,Ocmock,Xcode6.3,我想用XCTest进行单元测试,使用mock。我从OCMock.org下载了OCMock 3.1.2。我尝试新语法,如下所述: 但是,Xcode 6.3无法识别方法andReturn,请参见屏幕截图。它识别的唯一方法是和ForwardToRealObject。当我命令单击此方法时,它将打开文件OCMStubRecorder.h,其中在界面中定义了andReturn!为什么Xcode不能识别它 如果我仍然键入它,编译器有时会识别它,有时则不会 不知道为什么,但至少对我来说,由于某种原因,我不能通

我想用XCTest进行单元测试,使用mock。我从OCMock.org下载了OCMock 3.1.2。我尝试新语法,如下所述:

但是,Xcode 6.3无法识别方法
andReturn
,请参见屏幕截图。它识别的唯一方法是
和ForwardToRealObject
。当我命令单击此方法时,它将打开文件
OCMStubRecorder.h
,其中在界面中定义了
andReturn
!为什么Xcode不能识别它


如果我仍然键入它,编译器有时会识别它,有时则不会

不知道为什么,但至少对我来说,由于某种原因,我不能通过点符号使用
andReturn
。如果要执行
[OCMStub([mock_db_helper getArticleForArticleId:1])和返回:有效吗?

这可能与中解释的碰撞有关。您可以在前缀标题中将
OCMock
重新映射到
OCAndReturn
,如下所示:

#define OCandReturn(aValue) _andReturn(({ __typeof__(aValue) _val = (aValue); NSValue *_nsval = [NSValue value:&_val withObjCType:@encode(__typeof__(_val))]; if(OCMIsObjectType(@encode(__typeof(_val)))) { objc_setAssociatedObject(_nsval, "OCMAssociatedBoxedValue", *(__unsafe_unretained id *) (void *) &_val, OBJC_ASSOCIATION_RETAIN); } _nsval; }))
您的代码将变成:

OCMStub([mock_db_helper getArticleForArticleId:1]).OCAndReturn(...);
不幸的是,如果
OCMock
的宏发生更改,则需要对其进行更新,但这将避免符号重复问题