javascript - 期待几个但不是全部正确

标签 javascript testing jestjs chai

假设我有一个数组 arr = [true, false, false, true, false]。 我想断言这个数组中正好有两个值是真的。显然,我可以做这样的事情(使用 lodash):

Chai.expect(_.filter(arr, item => item == true)).to.have.length(2)

是否有更 Chai-y 或 Jest-y 的方式来做到这一点?

最佳答案

对此没有专门的方法。需要自定义断言。

最接近的断言方法如下:

这两个选项都不适合,因为你的期望值是一个值类型,上面的函数使用 === 进行比较(它可以改变,至少在 Chai 中,但对我们来说仍然没有区别例)。

// Jest example
describe('arrayContaining', () => {
  const expected = [true, true];

  it('does not match: not enough `true` values received', () => {
    expect([true, false, false]).not.toEqual(expect.arrayContaining(expected));
  });

  it('does not match: not enough toatl values received', () => {
    expect([true]).not.toEqual(expect.arrayContaining(expected));
  });
});

上面的两个断言都会失败,这意味着这些断言规则/函数无法发现给定情况下预期值和实际值之间的差异。

关于javascript - 期待几个但不是全部正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51734343/

相关文章:

typescript - 没有为 ts-jest 和 puppeteer 定义浏览器

javascript - Object.create() 使用

javascript - 窗口退出时的模态弹出窗口 - 重置一次

javascript - 将 jQuery/javascript 源页面放在 body 标记末尾之前

testing - Google Cloud Pub/Sub - 发布测试消息

javascript - 使用 es6 导入未定义错误

react-native - React Native 中的 Jest 和异步存储

Javascript - 禁用基于所选选项的选择选项元素

java - 如何强制方法在 jUnit 测试中抛出异常?

c# - 单元测试的 Web 资源