我经常面对这样的事情
public void methodToTest() {
Set<String> names = dependencyDao.getNamesFromExternalDataSource();
for (String name : names) {
externalService.doSomethingWithName(name);
//....
}
}
所以最后我需要模仿我的dependencyDao
的预期结果来验证我在externalService
上的行为,这对于通用值是否正常但是什么是模仿集合的“最干净”方式或者像我上面的例子中的列表?使用一个值创建HashSet<String>
似乎不是正确的事情。
答案 0 :(得分:4)
使用一个值创建Set<String>
正是我要做的。
when(dependencyDao.getNamesFromExternalDataSource())
.thenReturn(Collections.singleton("name"));
methodToTest();
verify(externalService).doSomethingWithName("name");
答案 1 :(得分:3)
不要试图模仿集合或任何其他类型的集合。嘲弄一个系列比它的价值更麻烦,因为很容易制作一个系列,可能还有嘲讽。
您可能希望确保方法正常工作,无论返回的集合是否为空。如果我正在测试这个,我会为每个案例都有一个测试方法。
但是这些都是“真正的”收藏品,而不是嘲笑。