@revoloo/cypress6
Version:
Cypress.io end to end testing tool
122 lines (92 loc) • 3.14 kB
JavaScript
/// <reference types="cypress" />
import AjaxList from './AjaxList.vue'
import { mount } from '@cypress/vue'
/* eslint-env mocha */
describe('AjaxList', () => {
context('using cy.intercept()', () => {
// because this component loads data right away
// we need to setup XHR intercepts BEFORE mounting it
// thus each test will first do its "cy.route"
// then will mount the component
it('loads list of posts', () => {
mount(AjaxList)
cy.get('li').should('have.length', 3)
})
it('can inspect real data in XHR', () => {
cy.intercept('/users?_limit=3').as('users')
mount(AjaxList)
cy.wait('@users').its('response.body').should('have.length', 3)
})
it('can display mock XHR response', () => {
const users = [{ id: 1, name: 'foo' }]
cy.intercept('GET', '/users?_limit=3', { body: users }).as('users')
mount(AjaxList)
cy.get('li').should('have.length', 1).first().contains('foo')
})
it('can inspect mocked XHR', () => {
const users = [{ id: 1, name: 'foo' }]
cy.intercept('GET', '/users?_limit=3', users).as('users')
mount(AjaxList)
cy.wait('@users').its('response.body').should('deep.equal', users)
})
it('can delay and wait on XHR', () => {
const users = [{ id: 1, name: 'foo' }]
cy.intercept({
method: 'GET',
url: '/users?_limit=3',
}, {
delayMs: 1000,
body: users,
}).as('users')
mount(AjaxList)
cy.get('li').should('have.length', 0)
cy.wait('@users')
cy.get('li').should('have.length', 1)
})
})
context('using cy.route()', () => {
// because this component loads data right away
// we need to setup XHR intercepts BEFORE mounting it
// thus each test will first do its "cy.route"
// then will mount the component
it('loads list of posts', () => {
mount(AjaxList)
cy.get('li').should('have.length', 3)
})
it('can inspect real data in XHR', () => {
cy.server()
cy.route('/users?_limit=3').as('users')
mount(AjaxList)
cy.wait('@users').its('response.body').should('have.length', 3)
})
it('can display mock XHR response', () => {
cy.server()
const users = [{ id: 1, name: 'foo' }]
cy.route('GET', '/users?_limit=3', users).as('users')
mount(AjaxList)
cy.get('li').should('have.length', 1).first().contains('foo')
})
it('can inspect mocked XHR', () => {
cy.server()
const users = [{ id: 1, name: 'foo' }]
cy.route('GET', '/users?_limit=3', users).as('users')
mount(AjaxList)
cy.wait('@users').its('response.body').should('deep.equal', users)
})
it('can delay and wait on XHR', () => {
cy.server()
const users = [{ id: 1, name: 'foo' }]
cy.route({
method: 'GET',
url: '/users?_limit=3',
response: users,
delay: 1000,
}).as('users')
mount(AjaxList)
cy.get('li').should('have.length', 0)
cy.wait('@users')
cy.get('li').should('have.length', 1)
})
})
})