首页 > 解决方案 > Chai deep.include 抛出错误“Uncaught AssertionError:预期......”

问题描述

我正在使用mochachai进行测试。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();

标签: javascriptnode.jstestingmocha.jschai

解决方案


Deep.include严格检查数组是否有成员{message: "Good"}。测试失败,如果目标数组元素有另一个字段规范有错误的描述。用于检查数组是否包含包含{ message: "Good" }

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

当数组的至少一个元素包含时,测试通过{ message: "Good" }


推荐阅读