Jest 快照测试因 ANSI 而失败,输出相同

Jest snapshot tests failing with same output because of ANSI

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

测试在我的本地环境 (Windows) 中通过,但在 CI (Linux)

中失败

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

我试图重新创建问题,所以我 运行 在我的 WSL 中进行了测试并且测试通过了,所以我 运行 它在其他一些 Linux 服务器上并且测试再次通过.

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

我通过以下方式调试了 CI:

我发现我的快照包含 ANSI 转义码,所以经过一番搜索后我发现了这个 GitHub 问题评论 - Snapshot comparison failing but results look identical 合作者写道:

You can try running with NO_COLOR=1 or CI=true or some such

所以我在我的本地机器上同时尝试了这两个但没有运气,我在 WSL 中尝试它但失败了,所以我删除了 CI=true(因为我想到了 ANSI)和测试通过了,所以我只尝试了 CI=true,但测试失败了。

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

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

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

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