我的测试包含以下内容:
it.only('does something', function() {
cy.window().then(function(win) {
win.GlobalObject = {
someMethod: function(data) {
return expect(data).to.deep.eq({
company: 'Pied Piperz',
country: 'United States'
});
}
};
});
cy.get('[data-cy=submit]').click();
});
运行测试时,部分逻辑会调用window.GlobalObject.someMethod({})
,这会导致测试失败,因为我没有将预期的对象传递给someMethod()
。相反,我在日志中看到一个失败的断言:
但是总体测试被标记为成功:
我如何在模拟的GlobalObject
中得到失败的断言,以使整个测试失败?
答案 0 :(得分:0)
问题是您的测试在通过后就失败了。
一旦Cypress完成cy.get('[data-cy=submit]').click()
,它就会执行所有命令,因此它认为您的测试已完成。
然后,几毫秒后,您的expect()
失败了-但是赛普拉斯已经通过了测试,因此没有任何有意义的事情要做。
但是一切并没有丢失!您可以使用可选的done
参数来手动告诉Cypress测试完成的时间,例如:
it.only('does something', function(done) { // <--- note `done` here
cy.window().then(function(win) {
win.GlobalObject = {
someMethod: function(data) {
expect(data).to.deep.eq({
company: 'Pied Piperz',
country: 'United States'
});
done(); // <--- this call tells Cypress the test is over
}
};
});
cy.get('[data-cy=submit]').click();
});