Использование вложенного включения в массиве - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь убедиться, что массив имеет 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 голосов
/ 09 февраля 2019

Мне не нравится это решение, но вы можете обернуть его объектом.

Итак, наша полезная нагрузка равна 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 });

Это работает, но мне не нравится, когда нужно обернутьЭто.Очень все еще открыт для решений.Это ошибка, о которой я должен сообщить команде Chai?

...