检查数组是否在Jest中不包含伪造的值

时间:2018-08-25 13:34:53

标签: javascript node.js unit-testing jestjs

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

由于某种原因,此方法不起作用-测试通过:

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

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

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

2 个答案:

答案 0 :(得分:3)

如果badValuesincludes()都是由字符串或数字组成的数组,而不是对象,则可以依次遍历valuesbadValues

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)