我想验证给定的数组不包含任何值列表。有expect.arrayContaining
但我不明白它应该如何用于此。
看这个例子:
expect(["1", "2", "3"]).not.toEqual(expect.arrayContaining(["3"])
此测试失败,这是预期的行为。我想验证数组中不包含“3”。一切都很好。但是,现在我有多个值,如果数组包含其中任何一个值,我希望测试失败。
expect(["1", "2", "3"]).not.toEqual(expect.arrayContaining(["3", "4"])
即使我预计它会失败,这个测试也不会失败,因为数组包含“3”。我能做的是:
expect(["1", "2", "3"]).not.toEqual(expect.arrayContaining(["3"])
expect(["1", "2", "3"]).not.toEqual(expect.arrayContaining(["4"])
...
但是必须为每个值重复整个期望线似乎不是正确的方法。尤其是当 arrayContaining
将数组作为参数,而看起来您只能将单个值传递给它才有用。我确信这种行为有有效的用例,但我问的是如何以更简洁的方式通过用例实现。基本上,我希望一旦数组包含第二个数组的一个或多个值,测试就会失败。有点像“黑名单”。
最佳答案
不要过度考虑完美匹配器,只需编写测试并继续:
const shouldntHave = [4,5,6];
const subject = [1,2,3]
shouldntHave.map(m => expect(subject).not.toContain(m));
编辑:要清楚,我鄙视自定义匹配器。我已经在整理别人的代码来修复错误,我也不想深入测试基础设施。断言应该简单明了。
关于javascript - 开 Jest : test that an array contains none of these values?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67537729/