【发布时间】:2019-07-22 09:00:18
【问题描述】:
这让我很困惑,让我用基本的例子来解释一下;
public void search(String name) {
// some more
Response response = component.findByName(name);
// some more action with response
}
所以当我为它写测试时;
@Test
public void search_givenName_shouldOk() {
Example example = new Example();
Component component= Mockito.mock(Component.class);
String name = "test";
when(component.findByName(eq(name))).thenReturn(mock(Response.class));
example.search(name);
verify(component, times(1)).findByName(eq(name));
}
所以实际上当我们使用 eq(name) 输入编写 when(...) 子句时,它不是已经验证了我们的测试用例吗?否则 findByName 将不会返回 Response 并且进一步的调用也不行。那么当我们再次使用verify(..)进行验证时,是不是一劳永逸?
【问题讨论】:
-
又是同一个stackoverflow社区,没有理解问题,直接参考文档或重复问题。 ->“我知道这些。我认为人们准备好在不理解的情况下参考文档。我说;当你在输入时使用'eq'时,你已经验证了它是否被该输入调用。比在验证部分你说'验证我的函数是否是用这个输入来调用的,但是你已经用 'eq' 强制你的 when 查询来验证它。"
标签: java unit-testing junit