如何在 Jest 测试中使用 Custom Matchers

Jest 是一个流行的 JavaScript 测试框架,它提供了丰富的断言库和匹配器,用于编写测试用例。但是,有时候我们需要自定义一些匹配器,以满足特定的测试需求。在本文中,我们将学习如何在 Jest 测试中使用 Custom Matchers。

什么是 Custom Matchers?

Custom Matchers 是指我们自己定义的匹配器函数,它们可以用于检查测试结果是否符合预期。在 Jest 中,Custom Matchers 是一个函数,它接收一个或多个参数,然后返回一个对象,该对象包含了匹配器函数的描述和实现。

如何编写 Custom Matchers?

编写 Custom Matchers 需要遵循以下步骤:

  1. 定义一个函数,该函数接收一个或多个参数。
  2. 在函数中编写匹配器逻辑。
  3. 返回一个对象,该对象包含了匹配器函数的描述和实现。

下面是一个简单的 Custom Matcher 的例子:

function toBeDivisibleByTwo(received) {
  const pass = received % 2 === 0;
  if (pass) {
    return {
      message: () => `expected ${received} not to be divisible by two`,
      pass: true,
    };
  } else {
    return {
      message: () => `expected ${received} to be divisible by two`,
      pass: false,
    };
  }
}

expect.extend({
  toBeDivisibleByTwo,
});

test('toBeDivisibleByTwo', () => {
  expect(2).toBeDivisibleByTwo();
  expect(3).not.toBeDivisibleByTwo();
});

在上面的例子中,我们定义了一个名为 toBeDivisibleByTwo 的 Custom Matcher,它接收一个参数 received,并检查该参数是否可以被 2 整除。如果可以被整除,就返回一个 pass 属性为 true 的对象,否则返回一个 pass 属性为 false 的对象。在 expect.extend 中注册该 Custom Matcher 后,我们就可以在测试用例中使用它了。

如何使用 Custom Matchers?

使用 Custom Matchers 非常简单,只需要在测试用例中使用 expect 对象调用自定义的匹配器函数即可。例如:

test('toContainItem', () => {
  expect(['foo', 'bar', 'baz']).toContainItem('bar');
  expect(['foo', 'bar', 'baz']).not.toContainItem('qux');
});

在上面的例子中,我们使用了一个名为 toContainItem 的 Custom Matcher,它用于检查数组中是否包含指定的元素。如果包含,就返回一个 pass 属性为 true 的对象,否则返回一个 pass 属性为 false 的对象。

总结

Custom Matchers 是 Jest 中非常有用的功能,它可以帮助我们编写更加灵活和可读性强的测试用例。通过本文的介绍,我们学习了如何编写 Custom Matchers,以及如何在测试用例中使用它们。希望本文能对你有所帮助,也希望大家能够更加深入地了解 Jest 的使用。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658efee6eb4cecbf2d4be473


纠错
反馈