Mockito捕获回调消息

时间:2012-08-23 09:08:01

标签: unit-testing mocking mockito

我有一个模拟回调对象

Callback callback = mock(Callback.class);

此对象有两种方法done()failed(String msg)

我做了

verify(callback).done();

看到done()被调用,但是当事情发生得不好而且调用了failed(String msg)时,我该如何打印msg

1 个答案:

答案 0 :(得分:3)

您可以在验证msg被调用时使用ArgumentCaptor来捕获failed(),例如在您可以定义的测试类中:

@Mock private Callback mockCallback;
@Captor private ArgumentCaptor<String> stringCaptor;

并且在测试中:

verify(mockCallback).falied(stringCaptor.capture());

final List<String> capturedMessages = stringCaptor.getAllValues();
final String actualMsg = capturedMessages.get(0);
final String expectedMsg = "foo";

assertEquals(expectedMsg, actualMsg);

注意:@Captor注释是在mockito v1.8.3中引入的。如果您使用的是之前的版本,则上面链接的API中有一个先前语法的示例。