我试图用Jest创建一个单元测试,以确保名为values
的数组不包含虚假值。
由于某些原因,这不起作用-测试通过:
const badValues = ['', null, undefined, false, {}, []];
expect(values).toEqual(expect.not.arrayContaining(badValues));
下面的代码按预期工作(测试失败),但是肯定有某种正确的方法来代替遍历我的值吗?
for (const value of values) {
expect(value).toBeTruthy();
}
最佳答案
如果badValues
和includes()
都是字符串或数字的数组,而不是对象,则可以遍历values
然后遍历badValues
。
const badValues = ['', 'null', 'undefined', 'false', '{}', '[]'];
var values = [1,2,3,4,'null',5];
for(let i = 0; i<badValues.length; i++){
if(values.includes(badValues[i])){
console.log("bad value present");
break;
}
}
否则,我认为没有比遍历
values
更好的方法了。使用test()
和regex是可能的,但是[
,]
,{
,}
在regex表达式中都是特殊字符。所以我们应该逃脱它们。