Краткое описание проблемы:
Я написал функцию с именем getImagePathsFromCatalog , которая принимает строку, представляющую местоположение файла каталога (XML). Он считывает информацию о продукте из файла каталога и создает массив «map» (*), состоящий из productIds (ключ), каждый из которых содержит массив связанных изображений (значение).
В моем приложении это работает нормально и всегда возвращает ожидаемый результат, который должен выглядеть примерно так (отформатирован для удобства чтения):
[
'TEST-123': [ 'products/TEST-123.jpg' ],
'TEST-12345': [ 'products/Equipment/TEST-12345.jpg',
'products/Equipment/TEST-12345_1.jpg' ]
]
Справочная информация:
Я пытался использовать различный синтаксис для создания блока it (используя async / await , используя .then ); используя return и ожидаем ; использование различных методов Чай ( be , должен , заявить и т. д.); присвоение значения разрешения обещания let для использования в утверждении; используя готово ; и некоторые другие вещи, которые, я уверен, я забыл.
Я также пробовал разные ожидания, включая to.be.array , to.be.ok , to.exist и т. Д., Но все заканчивается одной и той же ошибкой.
Я установил и импортирую все необходимые библиотеки и функции: chai , chai-as-обещано , chai-arrays , chai-asserttype , chai.expect (и т. д.), и я также "использую" их, как в chai.use (chaiAsPromised) и т. д.
(*) Примечание: из-за спецификаций проекта я должен использовать массив, который ведет себя более или менее как карта, а не как реальный объект карты. Я знаю, что это может вызвать проблемы с такими тестами, как to.be.array , но это не должно помешать мне ожидать таких вещей, как результат, существующий или возвращающийся с ненулевым значением (по крайней мере, я бы так не думал был бы?).
Код:
describe('catalogImages.getImagePathsFromCatalog(catalogFile)', function () {
it('function should return an array', function() {
catalogImages.getImagePathsFromCatalog('../imports/catalog.xml')
.then(catalogImagePathsMap => {
return expect(catalogImagePathsMap).to.be.array();
});
});
});
Сводка ожидаемых и фактических результатов:
Ожидаемый результат: некоторые тесты (даже просто базовые утверждения о существовании или ненулевом / неопределенном статусе результата) должны пройти.
Фактический результат: все тесты, написанные для этой функции, возвращают одну и ту же ошибку («не может прочитать свойство« длина »из неопределенного»).
Я исследовал эту ошибку и пока не нашел решение, которое мне подходит. Заранее благодарю за любую помощь.