前言
Jest 是一个流行的 JavaScript 测试框架,广泛用于前端项目中。它提供了多种匹配器(matchers)用于测试各种类型的数据,包括数组和字符串等。其中,include
和 arrayContaining
匹配器允许我们方便地测试数组中是否包含指定的元素,本文将介绍这两种匹配器的使用方法。
include 匹配器
include
匹配器主要用于判断数组或字符串是否包含指定的元素或子字符串。其语法如下:
expect(arrayOrString).toInclude(elementOrSubstring);
其中,arrayOrString
为待测试的数组或字符串,elementOrSubstring
为待测试的元素或子字符串。如果 arrayOrString
包含 elementOrSubstring
,则测试通过;否则测试失败。
示例如下:
test('test include matcher', () => { const arr = [1, 2, 3]; expect(arr).toInclude(2); // 测试通过 expect(arr).toInclude(4); // 测试失败 const str = 'hello world'; expect(str).toInclude('hello'); // 测试通过 expect(str).toInclude('world!'); // 测试失败 });
arrayContaining 匹配器
arrayContaining
匹配器主要用于判断数组是否包含指定的一组元素。其语法如下:
expect(array).toEqual(expect.arrayContaining(elements));
其中,array
为待测试的数组,elements
为包含的元素组成的数组。如果 array
包含 elements
中的所有元素,则测试通过;否则测试失败。
示例如下:
test('test arrayContaining matcher', () => { const arr = [1, 2, 3, 4]; expect(arr).toEqual(expect.arrayContaining([2, 4])); // 测试通过 expect(arr).toEqual(expect.arrayContaining([2, 5])); // 测试失败 });
需要注意的是,arrayContaining
匹配器只能用于测试数组中是否包含指定的一组元素,而不能判断是否只包含这些元素。如果需要判断是否只包含指定元素,可以配合 toEqual
匹配器使用。示例如下:
test('test arrayContaining and toEqual matchers', () => { const arr = [1, 2, 3, 4]; expect(arr).toEqual(expect.arrayContaining([1, 2, 3, 4])); // 测试通过 expect(arr).toEqual(expect.arrayContaining([1, 2, 3])); // 测试失败 expect(arr).toEqual(expect.arrayContaining([2, 4, 1, 3])); // 测试通过 expect(arr).toEqual(expect.arrayContaining([2, 4, 1])); // 测试失败 });
总结
通过本文的介绍,我们了解了 Jest 中包含 include
和 arrayContaining
两种匹配器的使用方法。使用这两种匹配器,可以快速方便地测试数组和字符串是否包含指定的元素。同时,我们也需要注意这两种匹配器的适用范围和注意事项,避免在测试时产生误差。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648e9f5c48841e9894d0075a