【发布时间】:2018-08-25 13:34:52
【问题描述】:
我正在尝试使用 Jest 创建一个单元测试,以确保我的名为 values 的数组不包含虚假值。
由于某种原因这不起作用 - 测试通过:
const badValues = ['', null, undefined, false, {}, []];
expect(values).toEqual(expect.not.arrayContaining(badValues));
下面的代码按预期工作(测试失败),但肯定有一个正确的方法而不是循环我的值?
for (const value of values) {
expect(value).toBeTruthy();
}
【问题讨论】:
-
{}和[]都不是“假的”。 -
@Pointy 你说对了一半。
{}不是假的,而[]实际上是假的。在浏览器中尝试[] == false。 -
在您的浏览器中尝试
[] ? alert("truthy") : alert("falsy")。 -
[] 是一个空数组,对 any 对象的引用总是真实的。
==运算符不是测试它的好方法。
标签: javascript node.js unit-testing jestjs