当前位置: 代码迷 >> JavaScript >> 如何评估第一张快照
  详细解决方案

如何评估第一张快照

热度:43   发布时间:2023-06-13 11:35:01.0
function sum(a,b) { return a+b;}

it("testing snapshot with sum",()=>{
  expect(sum(1,2)).toMatchSnapshot();
})

如果测试在第一个快照本身返回的值不是3时,如何通过错误进行上述测试? 我猜它相对比较,但是我不确定是否可以在我们知道确切的价值的地方使用它。

使用快照测试用于测试渲染的UI,即组件的HTML。

如果要进行单元测试并测试函数的输出,则可以使用诸如toEqual匹配器, ,请参阅此 。

在您的情况下:

function sum(a, b) { return a + b; }

it("testing snapshot with sum", () => {
    expect(sum(1, 2)).toEqual(3);
})

只是为了完整:


如果Jest运行快照测试并且尚不存在快照,它将创建一个。 从 :

在随后的测试运行中,Jest将简单地将渲染的输出与先前的快照进行比较。 如果它们匹配,则测试将通过。 如果它们不匹配,则说明测试运行程序发现了一个错误...或者实现已更改,并且快照需要更新。

注意

快照工件应与代码更改一起提交,并在代码检查过程中进行检查。

快照测试最常用于UI代码,但这并不意味着它只能用于UI代码。


对于您正在描述的测试,第一次运行测试时,它将创建值为3的快照。

作为开发人员,您需要确保该值正确并使用源代码检查快照。

最终,这与检查是否将正确的3值传递给.toBe(3)并将该断言检查到源代码中的过程相同。


是的,这是测试所测试功能的有效方法。

话虽这么说, toMatchSnapshot开销toMatchSnapshot开销toBe因此对于像这样的简单测试,仅使用.toBe(3)而不是.toMatchSnapshot().toMatchSnapshot()

快照测试对于复杂的值(如UI)最有用,如果UI包含在内嵌并且难以准确更新,则UI会使测试文件膨胀。 通过快照测试,它们被存储在一个单独的文件中,并且一旦验证了更新的值是正确的,告诉Jest更新快照就可以轻松进行更新。

  相关解决方案