如何在 Jest 自定义匹配器中打印漂亮的对象差异?

Sas*_*lla 6 javascript jestjs

我正在编写一个自定义 Jest 匹配器来以某种任意方式比较对象:

expect.extend({
  toTorgle(received, expected) {
    ...
    return {
      pass: false,
      message: () => "expect(received).toTorgle(expected):" + ???
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

如何打印两个对象之间的良好对象差异,就像我使用(内置匹配器)获得的对象一样expect(received).toEqual(expected)

hoa*_*gdv 7

根据Jest-Platform document,您可以使用jest-diff来获取一个“打印精美”的字符串,说明两个参数之间的差异。

你的message函数将变成:

const { diff } = require('jest-diff'); // already available if Jest is installed

// ...

message: () => "expect(received).toTorgle(expected):" + diff(expected, received),
Run Code Online (Sandbox Code Playgroud)

默认情况下,第一个参数为diff()labeled Expected,第二个参数为labeled Received。这可以通过提供选项作为第三个参数来更改。请参阅选项文档