Jest 是一个流行的 JavaScript 测试框架,它提供了丰富的断言库和匹配器,用于编写测试用例。但是,有时候我们需要自定义一些匹配器,以满足特定的测试需求。在本文中,我们将学习如何在 Jest 测试中使用 Custom Matchers。
什么是 Custom Matchers?
Custom Matchers 是指我们自己定义的匹配器函数,它们可以用于检查测试结果是否符合预期。在 Jest 中,Custom Matchers 是一个函数,它接收一个或多个参数,然后返回一个对象,该对象包含了匹配器函数的描述和实现。
如何编写 Custom Matchers?
编写 Custom Matchers 需要遵循以下步骤:
- 定义一个函数,该函数接收一个或多个参数。
- 在函数中编写匹配器逻辑。
- 返回一个对象,该对象包含了匹配器函数的描述和实现。
下面是一个简单的 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