OCMock и Nocilla несовместимы?
Я пытаюсь использовать OCMock и Nocilla в одном наборе модульных тестов. Я использовал CocoaPods, чтобы установить их оба, и ссылаться на них, используя
#import <OCMock/OCMock.h>
#import <Nocilla/Nocilla.h>
Но когда я пытаюсь использовать.andReturn от Nocilla следующим образом (где 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: свойство '_andReturn' не найдено для объекта типа 'LSStubRequestDSL *'
Который сохраняется до тех пор, пока я не удалю #import "<OCMock/OCMock.h>"
из моего кода. Тогда все мои тесты проходят отлично.
Известна ли несовместимость с OCMock и Nocilla? Казалось, я нигде не могу найти ни одного - на самом деле я видел только противоположное - множество примеров людей, использующих оба в одной и той же тестовой среде все время. Поэтому я должен предположить, что я делаю что-то не так, может кто-нибудь сказать мне что?
2 ответа
OCMock определяет макрос с именем andReturn
, который имеет один аргумент. Если Nocilla также использует то, что называется andReturn
у этого есть единственный аргумент, то это несовместимость. Как упоминалось выше, этого можно избежать, если не andReturn
макрос из OCMock. Это, очевидно, означает, что впоследствии невозможно использовать эту часть синтаксиса OCMock.
Вы можете использовать оба, используя стандартную квадратную скобку, например:
[stubRequest(@"GET", myURL) andReturn](200).withBody(body);
Ужасно, но это работает.