Testing Recipes
  • Introduction
  • Cypress
    • How to navigate to a particular path
    • How to get hold of the currently focused element
    • How to confirm an element has a specific class
    • How to run just one of several tests
    • How to get hold of a specific element
    • How to type into an input field
    • How to confirm text value of input field
    • How to confirm list has expected number of items
    • How to stub a GET network request
    • How to wait for XHR response
    • How to create a single command from multiple commands
    • How to stub a POST network request
    • How to test for XHR failures
    • How to interact with hidden elements
    • How to create aliases for DOM elements
    • How to create a data-driven approach to testing
    • What are the different ways in which Cypress can be run
  • Jest
    • How can I test if a function was called?
    • How can I test if a curried function was called?
  • Architecture
    • How can I make my tests more declarative?
    • How can I make my tests more readable?
    • How can I speed up the writing of tests?
  • Enzyme
    • How can I set and get state in my component?
    • How can I simulate a click on a rendered component?
    • How can I simulate a change to an input field?
    • How can I check if a sub-component was rendered?
    • How can I invoke a method on my component?
    • How can I check to see if an event handler was invoked?
    • How can I set props and update a rendered component?
    • How can I mock the global window object in a test?
    • How can I mock functions used by the component I want to test?
  • Jasmine Recipes
    • How can I create a simple test suite?
    • What sort of matchers can I use on my expect calls?
    • How can I run code before and after each it block?
    • How can I mark tests as not having been implemented yet?
    • How can I spy on a method to check that it was called properly?
    • How can I test asynchronous code?
Powered by GitBook
On this page

Was this helpful?

  1. Cypress

How to test for XHR failures

// Store data in ./fixtures/todos.json
[
  { "id": 1, "name": "Eat", isComplete: true },
  { "id": 2, "name": "Sleep", isComplete: false },
  { "id": 3, "name": "Dream", isComplete: false }
]

// Add you custom command in here: support/commands.js
Cypress.Commands.add('seedAndVisit', (seedData = 'fixture:todos') => {
  cy.server()
  cy.route('GET', '/api/todos', seedData)
    .as('loadToComplete')
  cy.visit('/')
  cy.wait('@loadToComplete')
})


describe('form submission', () => {
  it('shows error message on form submission failure', () => {
    const newTodo = 'buy milk'
    cy.server()
    cy.route({
      method: 'POST',
      url: '/api/todos',
      status: 500,
      response: {}
    }).as('save')

    cy.seedAndVisit()

    cy.get('.inputfield')
      .type(newTodo)
      .type('{enter}')

    cy.wait('@save')
    cy.get('.list-item').should('have.length', 3)
    cy.get('.error').should('be.visible')
  })
})
PreviousHow to stub a POST network requestNextHow to interact with hidden elements

Last updated 5 years ago

Was this helpful?