jest快照测试:如何在jest测试结果中忽略部分快照文件

saw*_* we 21 snapshot jestjs react-native

问题:忽略.snap文件测试结果的某些部分

这里的问题:我的测试中有一些组件具有随机值,我并不真正关心它们的测试.有没有办法忽略我的X.snap文件的一部分?因此,当我将来运行测试时,它不会给我测试失败的结果.

Abd*_*oui 16

实际上,你需要模拟运动部件.

正如jest docs中所述:

您的测试应该是确定性的.也就是说,在未更改的组件上多次运行相同的测试应该每次都产生相同的结果.您有责任确保生成的快照不包含特定于平台的数据或其他非确定性数据.

如果它与时间有关,你可以使用

Date.now = jest.fn(() => 1482363367071);
Run Code Online (Sandbox Code Playgroud)


Jul*_*SIN 13

现在,您还可以使用属性匹配器来处理这些情况.

通过示例可以使用这些对象的快照:

const obj = {
  id: dynamic(),
  foo: 'bar',
  other: 'value',
  val: 1,
};
Run Code Online (Sandbox Code Playgroud)

您可以使用 :

expect(obj).toMatchSnapshot({
  id: expect.any(String),
});
Run Code Online (Sandbox Code Playgroud)

Jest将检查id是否为String,并像往常一样处理快照中的其他字段.

  • @MichaelBrawn 是的,使用以下语法: `toMatchSnapshot({id: Expect.any(String)}, "snapshot name")` (3认同)