【发布时间】:2021-03-11 09:04:39
【问题描述】:
List<String> lineArray = new ArrayList<String>();
Resource resource = resourceLoader.getResource("classpath:abc.txt");
InputStream in = resource.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
if(line.startsWith("#")) {
lineArray.add(reader.readLine()); }
}
reader.close();
以上代码是返回 void 的函数的一部分,我可以模拟 Resource 和 ResourceLoader,但无法找到模拟 BufferedReader 的方法。我还想模拟 List 并在 List.add() 上调用 Mockito.verify()。
【问题讨论】:
-
您可以模拟
Resource来为任意字符串数据返回一个有效的InputStream。为什么你不能在方法完成后检查lineArray?如果lineArray是一个局部变量,如果它不返回任何内容或修改任何状态,那么整个方法的意义何在? -
有一种模式:将
new BufferedReader(new InputStreamReader(in));提取到具有包可见性的方法中,并将其覆盖到测试中,以便测试中使用的类返回一个mock。
标签: java spring-boot mockito junit4