window.clearInterval 関数を監視する cy.spy
P粉023326773
2023-08-17 12:16:34
<p>開発中のアプリケーションでは、setInterval と clearInterval を使用します。 clearInterval メソッドが呼び出されているかどうかを監視したいと考えています。私が実際にやっていることは次のとおりです: </p>
<pre class="brush:php;toolbar:false;">beforeEach(() => {
cy.クロック(新しい日付())
})
it('テストシナリオ' => {
const fn = cy.spy(document.defaultView, 'clearInterval')
// fn = cy.spy(window, 'clearInterval') も試しました
...
...
...
//clearInterval 関数は「then」セクションに入るときに呼び出されますが、スタブはまだ呼び出されていないと報告します
cy.tick(30000).then(() => {
Expect(fn).to.have.been.Once
})
})
afterEach(() => {
cy.クロック().invoke('復元')
})</pre>
<p>上記のスニペットのexpectアサーションは失敗しますが、成功することを期待しています。スパイを初期化するための私のロジックは有効ですか?上記の問題についてご協力いただければ幸いです。 </p>
Cypress は、テストとアプリケーションで異なる
リーリーwindow
を使用します。cy.spy(window...
はテスト ウィンドウを使用していますが、アプリケーション ウィンドウを監視するには、cy.window()
コマンドを使用する必要があります。ただし、別の複雑な問題が発生する可能性があります。
cy. Clock()
は、アプリケーションのタイミング関数を制御できるようにclearInterval()
をプロキシに配置するため、実際には実行できない可能性があります。それを監視することができます。それでも正常に動作しない場合は、
リーリーcy. Clock()
の戻り値を取得し、呼び出し情報が付加されているか確認してください。または、
リーリーclearIntervalを指定してください
プロキシ化しないでください