码迷,mamicode.com
首页 > 其他好文 > 详细

[Cypress] Create True end-to-end Tests with Cypress (Smoke test)

时间:2018-07-06 01:50:24      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:sof   app   nali   invoke   ext   hat   sso   Stub   fail   

Integration tests let us keep our tests fast and reliable. They also allow us to test scenarios that are hard to recreate in a full end-to-end setup. That being said, we should round out our test suite with some high-level smoke tests. In this lesson, we’ll create some tests that seed our data-source and avoid stubbing our network calls, allowing us to test all parts of the application while using known data to keep our tests flake-free.

 

describe(Smoke Tests, () => {

    // context is no difference with describe in functionality
    context(No Todos, () => {
        it(Adds a new todo, () => {
            cy.server()
            cy.route(POST, /api/todos).as(save)

            cy.visit(/)

            cy
                .get(.new-todo)
                .type(New todo)
                .type({enter})

            cy.wait(@save)

            cy.get(.todo-list li).should(have.length, 1)

        })
    })

});

Now we have post a new todo to the backend, it will pass the test.

But the problem is that, when you rerun the test again, it will faild, because now in the db, we have two todos.

 

Therefore, we need to clear the db everytime before we run the test:

describe(‘Smoke Tests‘, () => {
    beforeEach(() => {
        cy.request(‘DELETE‘, ‘/api/todos/all‘)
    })


    // context is no difference with describe in functionality
    context(‘No Todos‘, () => {
        it(‘Adds a new todo‘, () => {
            cy.server()
            cy.route(‘POST‘, ‘/api/todos‘).as(‘save‘)

            cy.visit(‘/‘)

            cy
                .get(‘.new-todo‘)
                .type(‘New todo‘)
                .type(‘{enter}‘)

            cy.wait(‘@save‘)

            cy.get(‘.todo-list li‘).should(‘have.length‘, 1)

        })
    })
})

 

 

Another example:

    context(‘With todos‘, () => {
        beforeEach(() => {
            cy.fixture(‘todos‘).then(todos => {
                cy.request(‘POST‘, ‘/api/todos/bulkload‘, {todos})
            })

            cy.server()
            cy.route(‘GET‘, ‘/api/todos‘).as(‘load‘)

            cy.visit(‘/‘)

            cy.wait(‘@load‘)
        })

        it(‘Deletes todos‘, () => {
            cy.route(‘DELETE‘, ‘/api/todos/*‘).as(‘delete‘)

            cy
                .get(‘.todo-list li‘)
                .each($el => {
                    cy
                        .wrap($el)
                        .find(‘.destroy‘)
                        .invoke(‘show‘)
                        .click()

                    cy.wait(‘@delete‘)
                })
                .should(‘not.exist‘)
        })
    })

 

About smoke test

[Cypress] Create True end-to-end Tests with Cypress (Smoke test)

标签:sof   app   nali   invoke   ext   hat   sso   Stub   fail   

原文地址:https://www.cnblogs.com/Answer1215/p/9270948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!