Cypress.Promise
Cypress автоматически включает Bluebird и предоставляет его как Cypress.Promise.
Создайте новую промис Bluebird.
Синтаксис
new Cypress.Promise(fn)
Использование
Правильное использование
new Cypress.Promise((resolve, reject) => { ... })
Неправильное использование
new cy.Promise(...) // Errors, cannot be chained off 'cy'
Примеры
Используйте Cypress.Promise для создания промисов. Cypress понимает промисы, поэтому если вы возвращаете промис изнутри команд, таких как .then(), Cypress не будет продолжать, пока эти промисы не разрешатся.
Базовый промис
cy.get('button').then(($button) => {
return new Cypress.Promise((resolve, reject) => {
// do something custom here
})
})
Ожидание промисов
it('waits for promises to resolve', () => {
let waited = false
function waitOneSecond() {
// return a promise that resolves after 1 second
return new Cypress.Promise((resolve, reject) => {
setTimeout(() => {
// set waited to true
waited = true
// resolve with 'foo' string
resolve('foo')
}, 1000)
})
}
cy.wrap(null).then(() => {
// return a promise to cy.then() that
// is awaited until it resolves
return waitOneSecond().then((str) => {
expect(str).to.eq('foo')
expect(waited).to.be.true
})
})
})
Примечания
Отклоненные промисы тестов не приводят к ошибкам тестов
Если код теста имеет необработанный отклоненный промис, это не приводит к автоматическому ошибке теста. Если вы хотите, чтобы тест завершался с ошибкой, если есть необработанный отклоненный промис в коде теста, вы должны сделать одно из двух:
Если вы используете Cypress.Promise в коде теста, зарегистрируйте обратный вызов, используя API Bluebird
Cypress.Promise.onPossiblyUnhandledRejection((error, promise) => {
throw error
})
Если вы используете встроенные промисы в коде теста, зарегистрируйте обработчик событий на объекте теста window:
window.addEventListener('unhandledrejection', (event) => {
throw event.reason
})
Примечание: поскольку это объект теста window, такие обработчики НЕ сбрасываются перед каждым тестом. Вы можете зарегистрировать такие обработчики один раз, используя хук before в файле спецификаций.
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/utilities/promise