cypress で polling 処理をしたい
cypress でポーリングの E2E のテストをしたい場合
ステータスを確認するためにポーリングする実装をしたのですが、cypress で API をモックする場合
cy.intercept
で http リクエストを mock 可能なのですが、
it('hogehoge', () => { // todoのエンドポイントをmockする cy.intercept('GET', '/todos', [{ name: 'hoge1' }])
// 何かしらの処理
// もう一回同じエンドポイントを叩く cy.intercept('GET', '/todos', [{ name: 'hoge1' }, { name: 'hoge2' }]) })
とすると /todos
のレスポンスは常に { name: hoge1 }
しか返ってこない...
と思って調べてみると
https://glebbahmutov.com/blog/cypress-intercept-problems/#sending-different-responses
it('hogehoge', () => {
const items = [{ name: 'hoge1' }, { name: 'hoge2' }]
cy.intercept('GET', '/todos', (req) => req.reply(replies.shift()))
})
みたいな実装をすることで行けるようになりました。 うまいこと破壊的メソッドを利用する感じですね
以上
ref
https://glebbahmutov.com/blog/cypress-intercept-problems