as
Присвойте псевдоним для последующего использования. Ссылайтесь на псевдоним позже в команде cy.get() или cy.wait() с префиксом @.
Примечание:
.as()предполагает, что вы уже знакомы с основными понятиями, такими как псевдонимы.
Синтаксис
.as(aliasName)
Использование
Правильное использование
cy.get('.main-nav').find('li').first().as('firstNav') // Alias element as @firstNav
cy.intercept('PUT', '/users').as('putUser') // Alias route as @putUser
cy.stub(api, 'onUnauth').as('unauth') // Alias stub as @unauth
cy.spy(win, 'fetch').as('winFetch') // Alias spy as @winFetch
Неправильное использование
cy.as('foo') // Errors, cannot be chained off 'cy'
Аргументы
aliasName (Строка)
Имя псевдонима, к которому будет ссылаться позже в команде cy.get() или cy.wait() с использованием префикса @.
Возвращаемое значение
-
.as()возвращает тот же объект, который был передан ему из предыдущей команды.
Примеры
Элемент DOM
Присвоение псевдонима элементу DOM и последующее использование cy.get() для доступа к этому элементу.
it('disables on click', () => {
cy.get('button[type=submit]').as('submitBtn')
cy.get('@submitBtn').click().should('be.disabled')
})
Перехват
Присвоение псевдонима перехваченному маршруту, определённому с помощью cy.intercept(), и последующее использование cy.wait() для ожидания перехваченного маршрута.
// `PUT` requests on the `/users` endpoint will be stubbed with
// the `user` fixture and be aliased as `editUser`
cy.intercept('PUT', '/users', { fixture: 'user' }).as('editUser')
// we'll assume submitting `form` triggers a matching request
cy.get('form').submit()
// once a response comes back from the `editUser`
// this `wait` will resolve with the subject containing `url`
cy.wait('@editUser').its('url').should('contain', 'users')
Дополнительные примеры присвоения псевдонимов маршрутам можно найти здесь.
Файксчер
Присвоение псевдонима данным cy.fixture() и последующее использование this для доступа к ним через псевдоним.
beforeEach(() => {
cy.fixture('users-admins.json').as('admins')
})
it('the users fixture is bound to this.admins', function () {
cy.log(`There are ${this.admins.length} administrators.`)
})
Обратите внимание на использование стандартного синтаксиса функции. Использование стрелочных функций для доступа к псевдонимам через
thisне сработает из-за лексической привязкиthis.
Примечания
Псевдонимы сбрасываются
Примечание: все псевдонимы сбрасываются перед каждым тестом. Подробности см. в руководстве по псевдонимам.
Зарезервированные слова
Имена псевдонимов не могут совпадать с некоторыми зарезервированными словами.
Некоторые строки не допускаются в качестве имён псевдонимов, так как они являются зарезервированными словами в Cypress. К этим словам относятся: test, runnable, timeout, slow, skip, и inspect.
as является асинхронным
Помните, что команды Cypress асинхронны, включая .as().
Из-за этого нельзя синхронно получить доступ к чему-либо, что вы присвоили псевдониму. Необходимо использовать другие асинхронные команды, такие как .then(), для доступа к присвоенному псевдониму.
Вот несколько дополнительных примеров использования .as(), которые иллюстрируют асинхронное поведение.
describe('A fixture', () => {
describe('alias can be accessed', () => {
it('via get().', () => {
cy.fixture('admin-users.json').as('admins')
cy.get('@admins').then((users) => {
cy.log(`There are ${users.length} admins.`)
})
})
it('via then().', function () {
cy.fixture('admin-users.json').as('admins')
cy.visit('/').then(() => {
cy.log(`There are ${this.admins.length} admins.`)
})
})
})
describe('aliased in beforeEach()', () => {
beforeEach(() => {
cy.fixture('admin-users.json').as('admins')
})
it('is bound to this.', function () {
cy.log(`There are ${this.admins.length} admins.`)
})
})
})
Правила
Требования
-
.as()требует цепочки вызовов от предыдущей команды.
Проверки
-
.as()— это утилитарная команда. -
.as()не будет выполнять проверки. Проверки пройдут так, как если бы этой команды не существовало.
Таймауты
-
.as()не может иметь таймаут.
Журнал команд
Псевдонимы нескольких маршрутов
cy.intercept('/company/*').as('companyGet')
cy.intercept('/roles/*').as('rolesGet')
cy.intercept('/teams/*').as('teamsGet')
cy.intercept(/users\/\d+/).as('userGet')
cy.intercept('PUT', /^\/users\/\d+/).as('userPut')
Псевдонимы маршрутов отображаются на панели инструментов маршрутов:
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/as