赛普拉斯未处理异常

时间:2019-10-10 12:26:40

标签: javascript cypress

我正在使用以下代码来处理异常。但是当异常触发时,执行将中止。

it('Validate Login form', function () {
     cy.on('uncaught:exception', (err, runnable) => {

     done()

     return false
   })

    cy.xpath(repository.discoverMusician.pageHeading);

    cy.validateLoginForm(repository);
})

但是当cy.xpath(repository.discoverMusician.pageHeading);被触发异常时,执行将中止,cy.validateLoginForm(repository);将不会执行。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您的问题可能是由在异常处理程序中调用done回调引起的。 done回调传递给it测试用例的回调,并且应被调用以尽早终止测试。

第一个示例-终止错误测试,但使它成功:

describe('test', () => {
    it('test', () => {
        cy.document().then( doc => {
            doc.body.innerHTML = `
                <button class="btn" onclick="throw new Error('xx')">
                    click me
                </button>
            `;
        });

        Cypress.on('uncaught:exception', () => {
            return false;
        });

        cy.log('1');
        cy.get('.btn').click();
        cy.log('2'); // won't run
    });
});

第二个示例-不要终止对错误的测试,而是忽略错误:

describe('test', () => {
    it('test', (done) => {
        cy.document().then( doc => {
            doc.body.innerHTML = `
                <button class="btn" onclick="throw new Error('xx')">
                    click me
                </button>
            `;
        });

        Cypress.on('uncaught:exception', () => {
            done();
            return false;
        });

        cy.log('1');
        cy.get('.btn').click();
        cy.log('2'); // will be run
    });
});