在数组上使用嵌套的包含

时间:2018-12-23 18:18:49

标签: chai

我正在尝试验证数组具有2个具有以下值的元素:

expect([{
        createdAt: 1545588925941,
        updatedAt: 1545588925941,
        id: '5c1fd0bdd38b1b2bb0875dd9',
        readAt: null,
        type: 'ResidentCreatedTask',
        dataVersion: 0,
        data: '{}',
        user: '5c1fd0bdd38b1b2bb0875dd6',
        home: '5c1fd0bdd38b1b2bb0875dd8'
    },
    {
        createdAt: 1545588925941,
        updatedAt: 1545588925941,
        id: '5c1fd0bdd38b1b2bb0875dd9',
        readAt: null,
        type: 'ResidentCreatedTask',
        dataVersion: 0,
        data: '{}',
        user: '5c1fd0bdd38b1b2bb0875dd6',
        home: '5c1fd0bdd38b1b2bb0875dd8'
    }
]).to.be.an('array').that.has.lengthOf(2).and.to.deep.nested.include({
    0: {
        type: 'ResidentCreatedTask'
    },
    1: {
        type: 'ResidentCreatedTask'
    },
});

但是它不起作用。我也尝试将键更改为带有'[0]''[1]'等括号的字符串。

我还尝试了删除键并使val包含这样的数组:

.include([{ type: 'ResidentCreatedTask' }, { type: 'ResidentCreatedTask' }]);

但这也不起作用。

1 个答案:

答案 0 :(得分:0)

我不喜欢这种解决方案,但是您可以将其包装为一个对象。

因此我们的有效载荷为const payload = [{ id: 0 },{ id: 1 }]。执行以下操作将不起作用,这是我在原始帖子中所做的:

expect(payload).to.nested.include({ '[0].id': 0, '[1].id': 1 });

解决方法是:

const wrappedPayload = { a: payload };
expect(wrappedPayload).to.nested.include({ 'a[0].id': 0, 'a[1].id': 1 });

这有效,但是我不喜欢将其包装。仍然有很多解决方案。我应该向柴队报告这个错误吗?