Files
cypress/docs/source/api/commands/its.md
T
2017-05-19 12:01:36 -04:00

2.8 KiB

title, comments, description
title comments description
its true

cy.its gets regular properties on the current subject.

If you want to call a function on the current subject, use cy.invoke.

Returns the value of the property
Timeout cy.its cannot timeout unless you've added assertions. The assertions will retry for the duration of defaultCommandTimeout

cy.its( propertyName )

Gets the property with the specified name.

You can also access multiple nested properties with dot notation.

Usage

Access properties

cy.wrap({foo: "bar"}).its("foo").should("eq", "bar") // true

Call the length property on the current subject

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

Access functions

You can access functions to then drill into their own properties instead of invoking them.

// Your app code

// a basic Factory constructor
var Factory = function(arg){
  ...
}

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

// assign it to the window
window.Factory = Factory
cy
  .window() // get the window object
  .its("Factory") // now we are on the Factory function
  .invoke("create", "arg") // and now we can invoke properties on it

{% note info Testing cy.window().its('fetch') %} Check out our example recipe on testing window.fetch using cy.its() {% endnote %}

Drill into nested properties

You can additionally automatically drill into nested properties by using dot notation.

var obj = {
  foo: {
    bar: {
      baz: "quux"
    }
  }
}

cy.wrap(obj).its("foo.bar.baz").should("eq", "quux") // true

Command Log

Fetch 'comments' fixture

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

The commands above will display in the command log as:

screen shot 2016-05-24 at 12 39 40 pm

When clicking on its within the command log, the console outputs the following:

screen shot 2016-05-24 at 12 40 17 pm

Related