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' },
])
)
Вышеупомянутые команды будут отображены в журнале команд как:
При нажатии на its в журнале команд, консоль выводит следующее:
История
| Версия | Изменения |
|---|---|
| 3.8.0 | Добавлена поддержка аргумента options |
| 3.7.0 | Добавлена поддержка аргументов типа Number для propertyName
|
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/its