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

How can I print a pretty object diff in a Jest custom matcher?

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

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

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

根据 Jest-Platform document,您可以使用 jest-diff 得到一个“印刷精美”的字符串,说明两个参数之间的区别。

您的 message 函数将变为:

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

// ...

message: () => "expect(received).toTorgle(expected):" + diff(received, expected),