У меня есть метод проверки, который возвращает массив с ошибками. Я хочу создать модульный тест, который сравнивает эти ошибки, но я не могу использовать expect(fn).to.throw
, так как я не выбрасываю ошибки, а просто возвращаю их.
Это мой подход, но я получаю AssertionError: expected [ Array(2) ] to have the same members as [ Array(2) ]
it.only('catches when first row is a single-column', function () {
const worksheet = readWorksheet(Buffer.from(
'Table 1\n' +
'action,Email,firstname,lastname,channelIds\n' +
'save,[email protected],foo,bar,00000A'
))
const errors = validateHeaderRow(worksheet, requiredColumnNames, columnAliases)
expect(errors).to.have.same.members([
new Error('Missing required column/s action'),
new Error('The column label "Table 1" is invalid'),
])
})
Раньше мы использовали Жасмин .toEqual
, который работал, но теперь мы переключаемся на Мокко-Чай-Синон, и я не могу заставить его работать.
Поскольку объекты Error имеют много свойств и их не так просто сравнивать, я бы упростил проблему, сопоставив свойство message
из каждого объекта Error и сравнив его с ним. Утверждение становится:
expect(errors.map((err) => err.message)).to.deep.equal([
'Missing required column/s action',
'The column label "Table 1" is invalid',
]);
Это решение проверяет, содержит ли наш массив Errors каждый ожидаемый объект Error.