我正在使用以下代码来处理异常。但是当异常触发时,执行将中止。
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);
将不会执行。
有人可以帮忙吗?
答案 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
});
});