如何使用 ApprovalTests 来批准日志

How to use ApprovalTests for approving logs

我想用Approval Tests验证日志输出。处理日志文本的动态内容的首选方法是什么,例如时间戳?包含的 FileApprover 始终比较文件是否完全相等。

对此有几个解决方案。以下是它们的优先顺序:

  1. 测试期间不记录动态内容。

  2. 在测试期间伪造动态内容,以便输出一致。

  3. 比较前先清理日志文件。这通常看起来像:

    ScrubFile("log.txt", "log_scrubbed.txt", new DateScrubber(), new GuidScrubber())
    

这个概念与 llewellyn falco 描述的相同。但是,API 在 Approvals.Java 中发生了变化。

val dynamicContentScrubber = RegExScrubber(pattern, replacement)
val scrubberOptions = Options(dynamicContentScrubber)

Approvals.verify(content, scrubberOptions)

Approvals.Java 有一些内置的洗涤器,如 DateScrubberGuidScrubberRegexScrubber。您可以通过实现 org.approvaltests.core.Scrubber 接口来编写自己的接口。