Javascript 预期(x).toMatchSnapshot()->;使用默认的serialiser或JSON.stringify()?

Javascript 预期(x).toMatchSnapshot()->;使用默认的serialiser或JSON.stringify()?,javascript,json,snapshot,jestjs,Javascript,Json,Snapshot,Jestjs,Jest有一个特性,它的docs示例展示了如何将它与React组件一起使用。(renderer.create(…).toJSON()) 使用此功能测试常规Javascript对象时,我想到了两种可能的方法: expect(x).toMatchSnapshot() 这使用默认的序列化程序 expect(JSON.stringify(x,未定义,2)).toMatchSnapshot() 这将使用JSON.stringify作为序列化程序 当然,保存的.snap文件的内容在每种情况下都是

Jest有一个特性,它的docs示例展示了如何将它与React组件一起使用。(
renderer.create(…).toJSON()

使用此功能测试常规Javascript对象时,我想到了两种可能的方法:

  • expect(x).toMatchSnapshot()
    • 这使用默认的序列化程序
  • expect(JSON.stringify(x,未定义,2)).toMatchSnapshot()
    • 这将使用
      JSON.stringify
      作为序列化程序
当然,保存的
.snap
文件的内容在每种情况下都是不同的;但否则,它们将以同样的方式有效地执行

在这种情况下,哪种做法被视为最佳做法


还有其他推荐方法吗?

没有最佳实践。做最适合你的事情。如果你发现你的快照在
JSON.stringify
上有更多有价值的信息,那就去做吧


对于复杂的值(如Vue组件或库对象),您也可以编写自己的序列化程序:

谢谢链接。我正在尝试一个非常简单的自定义序列化程序:。。。让我们看看结果如何