如何对具有传递依赖项的函数进行单元测试

时间:2021-06-02 15:06:12

标签: java unit-testing mockito

鉴于下面的类拥有两个对象,一个用于修改文档,一个用于加载和存储它们,正确的单元测试应该是什么样子。为了测试,我使用了 jUnit5Mockito

public class Reporter {

private final Modifer modifier;
private final Storage storage;

public Reporter(Modifier modifier, Storage storage) {
    this.modifier = modifier;
    this.storage = storage;
}

public List<Report> modify() {
    List<Report> modificationReports = new LinkedList<>();

    for (Document document : storage.getAll()) {
        //modifies current document, saves new version and deletes old one
        modifier.modify(document);
        storage.save(document);
        storage.delete(document);

        //generates report
        Report modificationReport = new Report();
        modificationReport.setModifiedDocument(document);
        modificationReport.setMessage("Fetched from " + Utils.getNiceFileName(document));
        modificationReport.setExecutionTime(LocalDateTime.now());

        modificationReports.add(modificationReport);
    }
    return modificationReports;
}
}

我有以下问题。我知道的良好做法是模拟对象不应该返回模拟。那么我在 for-each 循环中的 storage.getAll 方法应该返回什么,以便以下用于生成报告的代码具有可提供给 Report 对象和 Utils.getNiceFileName 静态方法的有效对象。

另外,如何处理 LocaldateTime.now() 之后断言它应该是哪个值。

0 个答案:

没有答案
相关问题