柴deep.include引发错误“未捕获的AssertionError:预期...”

时间:2019-11-07 17:42:51

标签: javascript node.js testing mocha chai

我正在使用 mocha chai 进行测试。 res.body.data是一个对象数组。
当我直接通过to.include检查一个数组项时,它可以正常工作,但是当我尝试通过to.deep.include检查整个数组时,它会失败。
我被卡住了,请帮忙!

res.body.data = [{
  createdAt: 1573147796,
  id: "36d337d4-0184-11ea-acb9-0e4ed9667580",
  message: "Good",
  name: "John Doe",
  rate: 5
}]
//Running test

        expect(res.body.data).to.be.an('array');

        expect(res.body.data[0]).to.include({ //This works fine!
            message: "Good"
        });

        expect(res.body.data).to.deep.include({ //But this trows an error
           message: "Good"
         });
//Uncaught AssertionError: expected [ Array(1) ] to deep include { message: 'Good' }


        done();

1 个答案:

答案 0 :(得分:0)

Deep.include 严格检查数组是否具有成员{message: "Good"}。 如果目标数组元素具有其他字段,则测试失败 规格说明有误。 用于检查数组的对象是否包含{ message: "Good" }

    expect(res.body.data.some((item) => item.message === "Good")).to.equal(true);

当数组的至少一个元素包含{ message: "Good" }

时,测试通过