代码之家  ›  专栏  ›  技术社区  ›  Steerpike

使用mocha和chai断言JavaScript数组中包含的值

  •  2
  • Steerpike  · 技术社区  · 6 年前

    对于导入到测试套件中的数组中包含的值,在给定以下代码(显然不起作用)的情况下,断言这些值的最佳方法是什么?

    it('Grant all email phone perms', async() => {
      const vals = await doSomeStuff(page, frame);
    
      expect(vals[0]).to.equal('option| 1');
      expect(vals[1]).to.equal('option| 2');
      expect(vals[2]).to.equal('option| 3');
      expect(vals[3]).to.equal('option| 4');
    
    });

    在那里,在运行时,我可以看到 vals 包含:

    vals: Object{val1: "option|1", val2: "option|2", val3: "option|3", val4: "option|4"}
    

    我相信这是基本的东西,但我只是在学习!

    谢谢您。

    2 回复  |  直到 6 年前
        1
  •  1
  •   user3666653    6 年前

    如果你确切地知道结果应该是什么样子,你可以使用深度相等。

    expect(vals).to.deep.equal({val1: "option|1", val2: "option|2", val3: "option|3", val4: "option|4"})
    

    而且,您的数据似乎是一个对象而不是数组。但是深度相等对数组也很有用

        2
  •  0
  •   deerawan    6 年前

    作为替代方案,我们也可以使用 eql 它比 deep.equal

    expect(vals).to.eql({val1: "option|1", val2: "option|2", val3: "option|3", val4: "option|4"})
    

    参考文献: https://www.chaijs.com/api/bdd/#method_eql