Spec-Zone.ru › Cypress

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')

Псевдонимы маршрутов отображаются на панели инструментов маршрутов:

Command log for route

См. также

  • cy.get()
  • cy.wait()
  • Руководства: Псевдонимы

© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/as

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API