2013-09-23 135 views
0

我经常遇到这样的事情返回集合

public void methodToTest() { 

    Set<String> names = dependencyDao.getNamesFromExternalDataSource(); 
    for (String name : names) { 
     externalService.doSomethingWithName(name); 
     //.... 
    } 
} 

等我需要从我的dependencyDao嘲笑预期的结果,进行验证我externalService我的行为到底是对通用罚款值,但是在我上面的例子中,模拟Set或List的“最干净”的方法是什么?用一个值创建一个HashSet<String>在这里似乎不是正确的。

回答

3

不要试图嘲笑集合或任何其他类型的集合。嘲笑收藏品比它的价值更麻烦,因为收藏可能很容易,可能是因为内含嘲讽。

你可能希望确保该方法工作正常返回的集合是否为空。如果我正在测试这个,我会针对每种情况都有一个测试方法。

  • 返回的集合是空的。
  • 返回的集合有许多元素 - 三是可能就够了。
  • 返回的集合是一个单例。

但这些将分别是“真实”的集合,而不是嘲笑。

4

创建Set<String>用一个数值正好是我会做什么。

when(dependencyDao.getNamesFromExternalDataSource()) 
     .thenReturn(Collections.singleton("name")); 

methodToTest(); 

verify(externalService).doSomethingWithName("name");