我试图用Jest创建一个单元测试,以确保名为values
的数组不包含虚假值。
由于某种原因,此方法不起作用-测试通过:
const badValues = ['', null, undefined, false, {}, []];
expect(values).toEqual(expect.not.arrayContaining(badValues));
下面的代码按预期工作(测试失败),但是肯定有某种正确的方法来代替遍历我的值吗?
for (const value of values) {
expect(value).toBeTruthy();
}
答案 0 :(得分:3)
如果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表达式中都是特殊字符。所以我们应该逃脱它们。
答案 1 :(得分:0)
也许可以正常工作
list(hess_inv)