Использование OCMockito для имитации пустых методов

При использовании OCMockito отлично работает следующее:

DSAPIManager *mockAPIManager = mock([DSAPIManager class]);
[given([mockAPIManager initWithBaseURL:[mockAPIManager baseURL]]) willReturn:[DSAPIManager sharedAPIManager]];

Однако, когда я пробую то же самое для метода с несколькими аргументами (см. код ниже), я получаю ошибку компилятора «Тип аргумента« недействителен »неполный».

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, смоделируйте реализацию метода с помощью блока. Для моих целей метод возвращает блок завершения, который принимает два аргумента. Я хотел бы создать эти два аргумента, а затем запустить блок завершения внутри смоделированный блок реализации.)


person Andrew Lauer Barinov    schedule 13.03.2015    source источник
comment
В какой строке вы создаете mockAPIManager?   -  person Jon Reid    schedule 14.03.2015
comment
@JonReid добавил строку в код выше.   -  person Andrew Lauer Barinov    schedule 15.03.2015
comment
Спасибо. Каков тип возвращаемого значения второго метода?   -  person Jon Reid    schedule 15.03.2015
comment
Извините, @JonReid, я понял, что задавал неправильный вопрос. Я отредактировал приведенное выше с моим конкретным вариантом использования. Основной вопрос заключается в том, могу ли я использовать OCMockito для имитации void методов, которые имеют некоторые побочные эффекты. Спасибо.   -  person Andrew Lauer Barinov    schedule 16.03.2015


Ответы (2)


OCMockito еще не поддерживает заглушки методов void. Это потому, что пока не появились willThrow: и willDo:, в этом не было необходимости. Он будет добавлен как функция в ближайшее время. Вы можете отслеживать прогресс в https://github.com/jonreid/OCMockito/pull/93

person Jon Reid    schedule 16.03.2015

Теперь вы можете использовать GivenVoid следующим образом.

[givenVoid([mockAPIManager setLoginCredentialsWithEmail:@"" password:@""]) willDo:^id(NSInvocation *invocation) {
        // Mock implementation goes here
}];
person dalef84    schedule 11.11.2016