[Cypress] Load Data from Test Fixtures in Cypress

When creating integration tests with Cypress, we’ll often want to stub network requests that respond with large datasets. All of this mock data can lead to test code that is hard to read. In this lesson, we’ll see how to use fixtures to keep sample data in files and easily load it on demand in your tests.

Now we hard code the mock data into the test, somehow, we want those data can be reuseable for other cases.

So we need to change the following implementation by using fixture:

    it('should have four initial todos', function () {
        cy.server();
        cy.route('GET', '/api/todos', [
            {id: 1, name: 'one', isComplete: false},
            {id: 2, name: 'two', isComplete: false},
            {id: 3, name: 'three', isComplete: false},
            {id: 4, name: 'four', isComplete: false}
        ]);

        cy.visit('/');

        cy.get('.todo-list > li')
            .should('have.length', 4);
    });

Add cypress/fixtures/todos.json:

[
  { "id": 1, "name": "One", "isComplete": false },
  { "id": 2, "name": "Two", "isComplete": false },
  { "id": 3, "name": "Three", "isComplete": false },
  { "id": 4, "name": "Four", "isComplete": false }
]

 

Then change our code to:

    it('should have four initial todos', function () {
        cy.server();
        cy.fixture('todos')
            .then(todos => {
                cy.route('GET', '/api/todos', todos);
            });

        cy.visit('/');

        cy.get('.todo-list > li')
            .should('have.length', 4);
    });

There is a simple way provided by Cypress:

    it('should have four initial todos', function () {
        cy.server();
        /*
        cy.fixture('todos')
            .then(todos => {
                cy.route('GET', '/api/todos', todos);
            });
            */
        cy.route('GET', '/api/todos', 'fixture:todos');
        cy.visit('/');

        cy.get('.todo-list > li')
            .should('have.length', 4);
    });

猜你喜欢

转载自www.cnblogs.com/Answer1215/p/9090705.html