Я пытаюсь отлаживать тест в стеке CucumberJS/Protractor/Chai-as-promised.
var tableDataRows = $('.example-table-under-test').$$('tr');
var dataToTest = tableDataRows.map(function(rows, index) {
if (index > 0) {
var cells = rows.$$('td');
return {
'ATTRIBUTE A': cells.first().getText(),
'ATTRIBUTE B': cells.get(1).getText(),
'ATTRIBUTE C': cells.get(2).getText(),
'ATTRIBUTE D': cells.get(3).getText(),
'ATTRIBUTE E': cells.get(4).getText(),
'ATTRIBUTE F': cells.get(5).getText()
};
}
});
return chai.expect(dataToTest).to.eventually.deeply.equal(tableSpec.hashes());
Когда я запустил тест, я получил следующее сообщение об ошибке, несмотря на то, что характеристики огурца совпадают со значениями таблицы на экране:
AssertionError: expected [ Array(8) ] to deeply equal [ Array(7) ]
Я подумал, что поскольку картограф игнорирует первую строку из th
элементов, 7 должно равняться 7, поэтому я хотел отладить тест. Сначала я попытался просто добавить then
к map
как tableDataRows.map(...).then(console.error)
(поскольку .map
от транспортира element.all
/$$ возвращает обещание) для вывода данных, сопоставленных с tableDataRows
, но это не привело к каким-либо данным.
Я попытался then
создать случайную функцию, которая даже не использовала разрешенный вывод, чтобы просто посмотреть, выполняется ли она, и что это не так, поэтому я полагаю, что просто then
не разрешает обещание.
.then(function() {
console.error("I executed");
// this didn't work either
});
После этого я попытался поместить строку журнала в функцию карты прямо над возвратом, так как это, казалось, разрешалось, и это сработало - 7 раз (я ожидал, что картограф пропустит строку заголовка, но это сбивает с толку, потому что тест утверждает, что в массиве 8 элементов. Во всяком случае..)
Таким образом, каким-то образом .to.eventually
в chai-as-promised
разрешает обещания (как сказано в документации), но я не вижу, как моя .then()
после функции .map()
ничего не разрешает, или как любая из моих других попыток не разрешала обещание либо.
Можно ли разрешить обещание, не возвращая обещание chai.expect
(предположительное), которое обертывает обещание, используемое для получения данных для ожидания? -- Я также заметил, что ничего не разрешится, если у меня просто будет chai.expect(...).to.eventually.equal(...)
без предшествующего возврата.