使用cypress.io进行测试时,有没有一种方法可以断言没有对给定的URL发出XHR请求?
我想声明在单击"保存"按钮时添加了新的foo,但是在单击"取消"按钮时则没有.
像这样的东西:
cy.route('POST', '/foos').as('postFoo');
cy.get('.cancel-button').click();
cy.route('@postFoo').should('not.have.been.called'); // (magic imaginary syntax!)
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用执行assert.fail的onRequest回调设置cy.route,但是当调用URL时,这并没有使测试失败.
现在,我正在捕捉我的(故意)"没有请求发生"错误,如下所示:
cy.on('fail', (err, runnable) => {
expect(err.message).to.include('No request ever occurred.');
return false;
});
cy.wait('@postFoo', { timeout: 0 }).then(xhr => {
throw new Error('Unexpected API call.');
});
Run Code Online (Sandbox Code Playgroud)
...这似乎有效,但它肯定不会感到非常"cypress-y".
您可以重新别名route并更改其onRequest行为以进行抛出; 然而,断言事情没有发生通常更糟,因为它们是非确定性的.在继续之前,您应该等待多长时间才能发现错误?:
cy.route({
method: 'POST',
url: '/foos',
onRequest: () => {
throw new Error('Whoops')
}
})
cy.get('.cancel-button').click();
cy.wait(1000) // give it one second to throw, then move on
Run Code Online (Sandbox Code Playgroud)
这样的断言只会给你的测试增加不必要的时间.这种类型的测试称为赛普拉斯文档中提到的条件测试
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |