Spec-Zone.ru › Cypress

its

Получите значение свойства на ранее сгенерированном объекте.

Если вы хотите вызвать function на ранее сгенерированном объекте, используйте .invoke().

Синтаксис

.its(propertyName)
.its(propertyName, options)

Использование

Правильное использование

cy.wrap({ width: '50' }).its('width') // Get the 'width' property
cy.window().its('sessionStorage') // Get the 'sessionStorage' property

Неправильное использование

cy.its('window') // Errors, cannot be chained off 'cy'
cy.clearCookies().its('length') // Errors, 'clearCookies' does not yield Object

Аргументы

propertyName (String, Number)

Индекс, имя свойства или имя вложенных свойств (с использованием нотации точки) для получения.

options (Object)

Передайте объект options, чтобы изменить поведение по умолчанию .its().

Параметр Значение по умолчанию Описание
log true Отображает команду в журнале команд
timeout defaultCommandTimeout Время ожидания .its() для разрешения перед выходом за пределы времени ожидания

Возвращаемое значение

  • .its() 'возвращает значение свойства'

Примеры

Объекты

Получение свойства

cy.wrap({ age: 52 }).its('age').should('eq', 52) // true

Массивы

Получение индекса

cy.wrap(['Wai Yan', 'Yu']).its(1).should('eq', 'Yu') // true

Элементы DOM

Получение свойства length элемента DOM

cy.get('ul li') // this yields us a jquery object
  .its('length') // calls 'length' property returning that value
  .should('be.gt', 2) // ensure the length is greater than 2

Запросы

Получение объекта user тела ответа body

cy
  .request(...)
  .its('body.user')
  .then(user => ...)

в качестве альтернативы используйте деструктуризацию

cy
  .request(...)
  .its('body')
  .then(({user}) => ...)

Строки

Получение length заголовка

cy.title().its('length').should('eq', 24)

Функции

Получение функции как свойства

const fn = () => {
  return 42
}

cy.wrap({ getNum: fn }).its('getNum').should('be.a', 'function')

Доступ к свойствам функции

Вы можете получить доступ к функциям, чтобы затем углубиться в их собственные свойства, вместо вызова.

// Your app code
// a basic Factory constructor
const Factory = (arg) => {
  // ...
}

Factory.create = (arg) => {
  return new Factory(arg)
}

// assign it to the window
window.Factory = Factory
cy.window() // yields window object
  .its('Factory') // yields Factory function
  .invoke('create', 'arg') // now invoke properties on it

Использование .its() для тестирования window.fetch

Просмотрите наш пример рецепта по тестированию window.fetch с помощью .its()

Вложенные свойства

Вы можете углубиться во вложенные свойства с помощью нотации точки.

const user = {
  contacts: {
    work: {
      name: 'Kamil',
    },
  },
}

cy.wrap(user).its('contacts.work.name').should('eq', 'Kamil') // true

Существование

Ожидание существования свойства в window

cy.window()
  .its('globalProp')
  .then((globalProp) => {
    // do something now that window.globalProp exists
  })

Утверждение, что свойства не существует в window

cy.window().its('evilProp').should('not.exist')

Правила

Требования

  • .its() требует цепочки после предыдущей команды.

Утверждения

  • .its() автоматически повторит попытки, пока свойство не станет не null или undefined .

Таймауты

  • .its() может выйти за пределы времени ожидания, ожидая существования свойства.
  • .its() может выйти за пределы времени ожидания, ожидая, пока утверждения пройдут.

Журнал команд

Получение responseBody алиаснового маршрута

cy.intercept('/comments', { fixture: 'comments.json' }).as('getComments')
cy.get('#fetch-comments').click()
cy.wait('@getComments')
  .its('response.body')
  .should(
    'deep.eq',
    JSON.stringify([
      { id: 1, comment: 'hi' },
      { id: 2, comment: 'there' },
    ])
  )

Вышеупомянутые команды будут отображены в журнале команд как:

Command Log for its

При нажатии на its в журнале команд, консоль выводит следующее:

Console Log for its

История

Версия Изменения
3.8.0 Добавлена поддержка аргумента options
3.7.0 Добавлена поддержка аргументов типа Number для propertyName

См. также

  • .invoke()
  • .then()
  • cy.wrap()
  • Добавление пользовательских свойств в глобальную window с правильным типом TypeScript
  • Установка флага для запуска тестов

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

Spec-Zone.ru

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