在前端的开发过程中,单元测试是必不可少的一部分。而在测试过程中,为了判断一些特定的值是否存在于数据中,我们常常需要使用 expect
断言库中的 to.contain
和 to.include
方法。下面,我们就来详解和使用这两个方法。
expect.to.contain 方法
expect.to.contain
可以用于判断某个值是否在数组中出现过,其用法如下:
expect([1, 2, 3]).to.contain(1);
如果数组包含指定的值,则返回 true
,否则返回 false
。
另外,我们也可以给 to.contain
传入一个正则表达式。例如:
expect('hello world').to.contain(/world/);
此时,如果字符串中包含了指定的正则表达式,则返回 true
,否则返回 false
。
expect.to.include 方法
expect.to.include
和 expect.to.contain
的作用类似,它也可以用来判断某个值是否在数组中出现过,其用法如下:
expect([1, 2, 3]).to.include(1);
如果数组包含指定的值,则返回 true
,否则返回 false
。
另外,我们也可以给 to.include
传入一个正则表达式。例如:
expect('hello world').to.include(/world/);
此时,如果字符串中包含了指定的正则表达式,则返回 true
,否则返回 false
。
与 to.contain
不同的是,to.include
可以用于判断对象是否包含某个属性。例如:
expect({a: 1, b: 2}).to.include.key('a');
此时,如果对象包含指定的属性,则返回 true
,否则返回 false
。
使用实例
下面,我们来举几个使用实例,以帮助大家更好地理解和使用这两个方法。
示例1:判断字符串中是否包含指定的词汇
const sentence = 'The quick brown fox jumps over the lazy dog.'; expect(sentence).to.contain('fox'); expect(sentence).to.contain(/brown/);
这段代码首先定义了一个字符串 sentence
,然后使用 expect.to.contain
方法来判断字符串中是否包含了 'fox' 和一个名为 'brown' 的正则表达式。如果包含,则测试通过,否则测试失败。
示例2:判断数组是否包含指定的元素
const arr = [1, 2, 3, 4]; expect(arr).to.include(2); expect(arr).to.not.include(5);
这个例子首先定义了一个数组 arr
,然后使用 expect.to.include
方法来判断数组中是否包含了 2,同时使用 expect.to.not.include
来判断数组中是否不包含 5。如果包含或不包含的判断结果都正确,则测试通过,否则测试失败。
示例3:判断对象是否包含指定的属性
const person = {name: 'John', age: 18, country: 'USA'}; expect(person).to.include.keys('name', 'age'); expect(person).to.not.include.keys('gender');
这个例子首先定义了一个对象 person
,然后使用 expect.to.include.key
方法来判断对象中是否包含了 'name' 和 'age' 两个属性,同时使用 expect.to.not.include.key
来判断对象中是否不包含 'gender' 属性。如果包含或不包含的判断结果都正确,则测试通过,否则测试失败。
总结
expect.to.contain
和 expect.to.include
方法是 chai
断言库中很实用的方法,它们可以帮助我们判断某个值或属性是否在数组或对象中出现过,从而进行测试。当我们编写前端的单元测试时,不妨考虑使用这两个方法,以提高测试的效率和准确性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6538711f7d4982a6eb13d08d