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