首页 > 解决方案 > 由于 ANSI,Jest 快照测试以相同的输出失败

问题描述

所以,我创建了一个自定义的笑话匹配器,我测试它们的一种方法是使用快照测试。

测试在我的本地环境 (Windows) 中通过并在 CI (Linux) 中失败

失败测试的输出是相同的。

我试图重现这个问题,所以我在我的 WSL 中运行了测试并且测试通过了,所以我在其他一些 Linux 服务器上运行它并且测试再次通过了。

我认为这是某种行尾问题,所以我检查了一下,我的行尾是 LF,所以仍然没有解决方案。

我通过以下方式调试 CI:

我发现我的快照包含 ANSI 转义码,所以经过一番搜索后,我发现了这个 GitHub 问题评论 -快照比较失败,但结果看起来与合作者写道的相同:

您可以尝试使用 NO_COLOR=1orCI=true或类似的方式运行

所以我在我的本地机器上同时尝试了这两种方法,但没有运气,我在 WSL 中尝试过,但失败了,所以我删除了CI=true(因为我考虑了 ANSI)并且测试通过了,所以我只尝试了CI=true和测试失败。

所以我不想只在 WSL 中运行我的测试,所以我需要找到一个不同的解决方案让它成为相同的快照。

标签: typescriptjestjssnapshotansits-jest

解决方案


所以解决方案是使用jest-snapshot-serializer-ansi包。

我需要像这样将它添加到snapshotSerializers开玩笑的配置中:

{
  "snapshotSerializers": ["jest-snapshot-serializer-ansi"]
}

推荐阅读