Использование OCMockito для макетирования пустых методов
При использовании OCMockito ниже прекрасно работает:
DSAPIManager *mockAPIManager = mock([DSAPIManager class]);
[given([mockAPIManager initWithBaseURL:[mockAPIManager baseURL]]) willReturn:[DSAPIManager sharedAPIManager]];
Однако, когда я пытаюсь сделать то же самое в методе с несколькими аргументами (см. Код ниже), я получаю "Аргумент типа" void "is notplete", ошибка компилятора.
DSAPIManager *mockAPIManager = mock([DSAPIManager class]);
[given([mockAPIManager setLoginCredentialsWithEmail:@""
password:@""]) willReturn:@""];
Кто-нибудь знает правильный путь по этому поводу?
редактировать
Моим первоначальным намерением задать этот вопрос было решение проблемы с ошибкой компилятора при попытке выполнить следующее:
[given([mockAPIManager setLoginCredentialsWithEmail:@"" password:@""]) willDo:^id(NSInvocation *invocation) {
// Mock implementation goes here
}];
Подпись метода, который я пытаюсь смоделировать:
- (void)setLoginCredentialsWithEmail:(NSString *)email password:(NSString *)password;
То, что я на самом деле пытаюсь сделать, это макет реализации void
метод. (Учитывая void
метод, макет реализации метода с блоком. Для моих целей метод возвращает блок завершения, который принимает два аргумента. Я хотел бы построить эти два аргумента, а затем запустить блок завершения внутри макетированного блока реализации.)
2 ответа
OCMockito пока не поддерживает создание пустых методов. Это потому что до willThrow:
а также willDo:
пришли, не было необходимости. Это будет добавлено как функция в ближайшее время. Вы можете отслеживать прогресс в https://github.com/jonreid/OCMockito/pull/93
Теперь вы можете использовать данный Void, как это
[givenVoid([mockAPIManager setLoginCredentialsWithEmail:@"" password:@""]) willDo:^id(NSInvocation *invocation) {
// Mock implementation goes here
}];