我用谷歌搜索过这个,但没有找到任何相关的东西。我有这样的东西:
Object obj = getObject();
Mockeable mock= Mockito.mock(Mockeable.class);
Mockito.when(mock.mymethod(obj )).thenReturn(null);
Testeable testableObj = new Testeable();
testableObj.setMockeable(mock);
command.runtestmethod();
现在,我想验证在 runtestmethod()
内部调用的 mymethod(Object o)
是否被 Object o
调用>,没有其他。但我总是通过测试,无论我在验证中添加什么,例如:
Mockito.verify(mock.mymethod(Mockito.eq(obj)));
或
Mockito.verify(mock.mymethod(Mockito.eq(null)));
或
Mockito.verify(mock.mymethod(Mockito.eq("something_else")));
我总是通过考试。我怎样才能完成该验证(如果可能)?
谢谢。
最佳答案
ArgumentMatcher
的替代方法是 ArgumentCaptor
.
官方示例:
ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());
也可以使用 @Captor 定义捕获者。注释:
@Captor ArgumentCaptor<Person> captor;
//... MockitoAnnotations.initMocks(this);
@Test public void test() {
//...
verify(mock).doSomething(captor.capture());
assertEquals("John", captor.getValue().getName());
}
关于java - 莫基托。验证方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3555472/