我试图用Jest创建一个单元测试,以确保名为values的数组不包含虚假值。

由于某些原因,这不起作用-测试通过:

const badValues = ['', null, undefined, false, {}, []];
expect(values).toEqual(expect.not.arrayContaining(badValues));


下面的代码按预期工作(测试失败),但是肯定有某种正确的方法来代替遍历我的值吗?

for (const value of values) {
  expect(value).toBeTruthy();
}

最佳答案

如果badValuesincludes()都是字符串或数字的数组,而不是对象,则可以遍历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表达式中都是特殊字符。所以我们应该逃脱它们。

10-08 10:59