でAJAX呼び出しをスタブ化:私のテストファイルでモカテスト、私は次のようになりますjqueryのAJAX呼び出し持っ.then
$.ajax({
type: "GET",
dataType: 'json',
data: data,
url: url
}).then((data, successFlag, xhr) => {
this.props.someFunc(data)
})
を、私はjqueryのAJAX呼び出しがsinonでスタブアウトし、それ持っています
sinon.stub($, 'ajax')
.returns(Promise.resolve({ data: 'test data' }))
また私はsomeFunc(データ)関数を覗いています。私のテストでは、ajax呼び出しを行い、someFunc(データ)が呼び出されることを期待する関数を呼び出しています。しかし、期待は失敗しますが、私は私のsomeFunc(データ)関数でコンソールログを置くとき、私はそれがはっきりと呼ばれていることがわかります。
component.instance().makeAjaxCall()
expect($.ajax.calledOnce).to.be.true // passes
expect(someFuncSpy.calledOnce).to.be.true // fails
今、私はそれを前に期待をチェックしていますので、それが失敗だと仮定します。そして実行し、私は約束してテストを扱ういくつかの解決策を探してみましたが、これまでに試したことは何もありませんでした(または私は間違って実装しています)。期待をチェックする前に、.thenが実行を終了していることを確認する方法はありますか?
申し訳ありませんが曖昧ですが、問題は私のmakeAjaxCall()が約束を返さないということです。 ajax呼び出しを行うことはmakeAjaxCall()関数の一部に過ぎません。そのため、私は関数をチェーン化できません。 – Andrew
したがって、setTimeoutなどを介して次のイベントの表示に期待することを除いて、約束を待つクリーンな方法はありません。 – felixmosh