2015-04-22 8 views
1

Я хочу сделать модульное тестирование с помощью XCTest, используя mocks. Я загрузил OCMock 3.1.2 из ocmock.org. Я попробую новый синтаксис, как описано здесь: http://ocmock.org/reference/#stubing-methodsМетод `andReturn` не распознается в OCMStub

Однако Xcode 6.3 не распознает метод andReturn, см. Снимок экрана. Единственный метод, который он распознает, - andForwardToRealObject. Когда я нажимаю на этот метод, он открывает файл OCMStubRecorder.h, в котором в интерфейсе andReturnуказан! Почему Xcode не распознает его?

Screenshot Xcode not recognizing andReturn

Если я печатаю это так или иначе, иногда распознается компилятором, а иногда нет.

ответ

0

Не знаете, почему, но по крайней мере для меня я почему-то не могу использовать andReturn через точечную нотацию. Если бы вы сделали [OCMStub([mock_db_helper getArticleForArticleId:1]) andReturn:<mock data>];, это сработает?

0

Это может быть связано с столкновением с Nocilla, описанным в this Nocilla issue. Вы можете переназначить OCMock «s andReturn макроса 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» макрос s но будет предотвращать проблему дублирования символов.

 Смежные вопросы

  • Нет связанных вопросов^_^