OCMock и блоки

У меня есть метод со следующей подписью, который я хочу проверить с помощью функции заглушки OCMock:

- (void)signInWithEmail:(NSString *)email andWithPassword:(NSString *)password andWithBlock:(void (^)(GNCustomer *customer, NSError *error))block

Как бы я пошутил над этим, чтобы обработать возвращенный блок.

Я пытался:

[[_mockAuthenticationRepository stub] signInWithEmail:[OCMArg any] andWithPassword:[OCMArg any] andWithBlock:^(GNCustomer *customer, NSError *error) {

            }];

Когда я пытаюсь заглушки с этим подходом, я получил неожиданный вызванный метод, который указывает, что моя заглушка не используется.

Спасибо!

1 ответ

Решение

Ну, я понял это:) Вот ответ:

[[[_mockAuthenticationRepository stub] andDo:^(NSInvocation *invocation) {
                void (^successBlock)(GNCustomer *customer, NSError *error) = nil;

                [invocation getArgument:&successBlock atIndex:4];

                NSDictionary *details = @{ NSLocalizedDescriptionKey : [OCMArg any] };
                NSError *error = [NSError errorWithDomain:@"Some Domain" code:401 userInfo:details];

                successBlock(nil, error);
            }] signInWithEmail:[OCMArg any] andWithPassword:[OCMArg any] andWithBlock:[OCMArg any]];
Другие вопросы по тегам