Jest 过时快照警告导致测试失败:退出 Jest 时忽略警告

问题描述 投票:0回答:2

我有一个已禁用的测试套件/文件。它有一个关联的快照文件。对于我的特殊情况,我不想删除或更新快照文件(长话短说:它在其他地方使用)。

因此,对于过时的快照,Jest 只会发出警告,而不是失败。然而,Jest 随后退出并显示代码 1,并且我的构建失败。尽管没有测试实际失败,但这种情况还是会发生。

我可以调整配置以忽略过时的快照吗?或者是否有其他方法可以让 Jest 在发出警告后以代码 0 退出?

enter image description here

jestjs snapshot
2个回答
1
投票

--silent 添加到项目 package.json 中的 test-ui 脚本中


0
投票

不幸的是,我找不到解决此问题的配置更新或 CI 标志,这是适用于我的用例的相关解决方案。

我最终重命名了过时的快照以避免使用

.snap
扩展名,这样它们就不会被 Jest 标记。

如果您希望 Jest 确认这些快照,但仅在某些条件下(例如在 CI 期间),您可以设置一个环境变量来修改 Jest 的快照解析器以有条件地确认您的快照文件。

在下面的示例中,我使用

.snapshot
文件扩展名重命名了我的测试快照。

创建或更新快照解析程序文件,如下所示:

./jest/snapshotResolver.js

module.exports = {
  resolveSnapshotPath: (testPath, snapshotExtension) => {
    if (process.env.ACKNOWLEDGE_TEST_SNAPSHOTS) {
      return `${testPath}.snapshot`;
    }

    return testPath + snapshotExtension;
  },

  resolveTestPath: (snapshotFilePath, snapshotExtension) => {
    if (process.env.ACKNOWLEDGE_TEST_SNAPSHOTS) {
      return snapshotFilePath.replace('.snapshot', '');
    }

    return snapshotFilePath.replace(snapshotExtension, '');
  },

  testPathForConsistencyCheck: 'some.test.js',
};

确保您的快照解析器文件已链接到您的 Jest 配置中。

module.exports = {
   snapshotResolver: './jest/snapshotResolver.js',
}
© www.soinside.com 2019 - 2024. All rights reserved.