OCMockito издевается над блоком

Я хочу макет объекта со следующим объявлением сообщения:

- (void)createWithCompletion:(void (^)(FuseResult *result, NSError *err)) completion;

Можно ли смоделировать вызов блока, который должно обработать это сообщение?

Я прочитал ArgumentCaptorTest, в котором есть блок, но я не был уверен, что это актуально.

1 ответ

Решение

Прокрутите вниз до нижней части https://github.com/jonreid/OCMockito и вы увидите "Сбор аргументов для дальнейших утверждений". Второй пример показывает, как использовать MKTArgumentCaptor чтобы захватить аргумент блока, а затем вызвать его.

Вот пример:

MKTArgumentCaptor *argument = [[MKTArgumentCaptor alloc] init];
[verify(mockObject) createWithCompletion:[argument capture]];
void (^completion)(FuseResult *result, NSError *err) = [argument value];
completion(someResult, someErr);

Это не делает mockObject вызвать блок любым способом. Вместо этого он захватывает блок, переданный mockObject, Последний шаг - вызвать захваченный блок с любыми аргументами, которые вы хотите использовать для своего теста.

Другие вопросы по тегам