#javascript #async-await
#javascript #async-await
Вопрос:
У меня ошибка: ‘Тип операнда ‘await’ должен быть либо действительным обещанием, либо не должен содержать вызываемый элемент ‘then’.’ при изменении формата теста с использования синтаксиса на основе promise .then (), который работал для использования async / await. Что и было моей попыткой ниже.
it('downloads successfully', async () => {
cy.get(downloadButton).click();
const csv = await cy.readFile(filename, { timeout: 15000 });
csv.should('have.length.gt', 20);
expect(csv, 'number of records').to.have.length(10);
})
перед
cy.readFile(filename, { timeout: 15000 })
.should('have.length.gt', 20)
.then(validateCsv);
Комментарии:
1. Это Cypress? Методы ввода-вывода Cypress не возвращаются
Promise<T>
. Смотрите здесь: docs.cypress.io/guides/core-concepts /…2. Спасибо, оказывается, это ответ. Я не понимал, что обещания cypress на самом деле не являются обещаниями. С радостью приму, если вы опубликуете его в качестве ответа.
Ответ №1:
readFile
метод не возвращает promise и, следовательно, вы не можете использовать await для него, но should
делает. Вы можете написать свою вышеуказанную реализацию следующим образом
it('downloads successfully', async () => {
cy.get(downloadButton).click();
const csv = cy.readFile(filename, { timeout: 15000 });
const res= await csv.should('have.length.gt', 20);
expect(res, 'number of records').to.have.length(10);
})
Комментарии:
1. Спасибо за ваш ответ. Как ни странно, я все еще получаю ту же ошибку в
const res = await csv.should(...)
строке.