OCMockito用块模拟调用

时间:2013-12-04 02:15:05

标签: objective-c unit-testing ocmockito

我想使用以下消息声明来模拟对象:

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

是否可以模拟此消息必须处理的块调用?

我读了ArgumentCaptorTest哪个有阻止,但我不确定它是否相关。

1 个答案:

答案 0 :(得分:6)

向下滚动到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的块。最后一步是使用您想要测试的任何参数调用捕获的块。