我正在尝试运行一项填写表单并单击按钮提交的测试:
it('adds biological sample with maximal input', function(){
cy.on('uncaught:exception', (err, runnable) => {
expect(err.message).to.include('of undefined')
done()
return false
});
cy.get('a').contains('Add biological sample').click();
cy.get('input[name=sampleID]').first().type("bioSample123");
cy.get('input[name=alternateSampleID]').first().type("bioSample123AltId");
cy.get('input[name=preservationMethod]').type('watercolor painting');
cy.get('input[name=storageLabID]').type('bioSample123Lab456');
cy.get('input[name=samplingProtocol]').type('dark summoning');
cy.get('input[name=samplingEffort]').type('maximal');
cy.get('input[name=fieldNumber]').type('uncountable');
cy.get('input[name=fieldNNotes]').type('Fred dropped the blood candles again. Thanks, Fred.');
cy.get('input[name=eventRemarks]').type('You would think this could bw in the field notes');
cy.get('input[name=institutionID]').type('Hogwarts');
cy.get('input[name=collectionID]').type('whaleSearch1');
cy.get('input[name=collectionCode]').type('ws1');
cy.get('input[name=datasetID]').type('summonedWhales');
cy.get('input[name=datasetName]').type('Summoned Whales');
cy.get('input[name=EditTissueSample]').first().click();
cy.url().should('match',/EncounterSetTissueSample/);
cy.contains('Action results');
});
尽管包含
cy.on('uncaught:exception', (err, runnable) => {
expect(err.message).to.include('of undefined')
done()
return false
});
在错误发生之前。
左下方显示错误,
错误:未捕获的断言错误:预期为'$ f未定义\ n \ n 错误源自您的应用程序代码,而不是赛普拉斯。 \ n \ n当Cypress检测到来自您的未捕获错误时, 应用程序,它将自动使当前测试失败。\ n \ n此 行为是可配置的,您可以选择通过以下方式将其关闭 聆听“未捕获:异常” 事件。\ n \ nhttps://on.cypress.io/uncaught-exception-from-application' 包括“未定义” (https://www.flukebook.org/_cypress/runner/cypress_runner.js:49186)
似乎我在接受赛普拉斯的建议,但未获得预期的结果。有什么建议么?这件事发生在别人身上吗?
答案 0 :(得分:1)
解决此问题的最简单方法是在规范顶部添加以下内容:
Cypress.on('uncaught:exception', (err, runnable) => {
return false;
});
这与您的“ it”块具有相同的缩进级别,直接嵌套在“ describe”下。它将导致赛普拉斯忽略所有未捕获的JS异常。
在问题中,Atticus29期望错误消息中出现“未定义”,但错误实际上并不包含该字符串。他可以改变
expect(err.message).to.include('of undefined')
到
expect(err.message).to.include('is not defined')
然后它将通过。
要关闭规范中所有未捕获的异常处理(推荐) https://docs.cypress.io/api/events/catalog-of-events.html#To-turn-off-all-uncaught-exception-handling
捕获单个未捕获的异常并断言它包含字符串 https://docs.cypress.io/api/events/catalog-of-events.html#To-catch-a-single-uncaught-exception
答案 1 :(得分:0)
您能从赛普拉斯异常块中删除expect(err.message).to.include('of undefined')
和done()
并在测试中添加以下代码并再次运行测试吗?
Cypress.on('uncaught:exception', (err, runnable) => {
// returning false here prevents Cypress from
// failing the test
return false
})
答案 2 :(得分:-1)
在您的 Test Suit
之前添加这些行。
Cypress.on('uncaught:exception', (err, runnable) => {
// returning false here prevents Cypress from
// failing the test
return false
});