16

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!)

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.');
});

...これは機能しているように見えますが、確かに「ヒノキっぽい」とは感じません。

4

3 に答える 3