javascript - 开 Jest : test that an array contains none of these values?

标签 javascript arrays jestjs assertion

我想验证给定的数组不包含任何值列表。有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/

相关文章:

javascript - 数据更改时无法更新 Angular 2 中的模板

javascript - Symfony 4 - 如何在 javascript 中使用资源?

javascript - 在 AngularJS 单元/集成测试中向 HTTP 服务器发出真实请求

reactjs - React 测试库 : Test if children are passed/rendered correctly

javascript - 从测试中自动生成文档(javascript、jest)

javascript - Moment js utc() 时间在伦敦 - BST

javascript - 检查对象是否包含具有值的属性

javascript 和 jsp 将 javascript 变量获取到我的 jsp 页面

java - 我们可以有一个集合的数组吗?

react-native - Detox + Jest - 应用没有响应下面的网络请求