次のようにjQueryを使用する関数があります。
function populate_messages_node() {
$.ajax({url: "/messages", type: "GET", success: populate_recent_messages});
}
この関数の統合テストを書きたいと思います。私の問題は、テスト:
function test_simple() {
populate_messages_node();
// assert node content here
}
... Ajax 成功メソッド (populate_recent_messages) が実行されるのを待ちません。この些細な例では、うまく$.ajaxSetup({async:false})
いきますが、それが常に正しいとは限らないのではないかと心配しています. より複雑なシナリオでは、このようなテストが多数あります。
私の質問は本当に次のとおりだと思います: Javascript で XHR/Websocket 操作の完了を待つ方法はありませんか?
本番コード (populate_messages_node) を変更したくないのですが、.ajax() から xhr の結果を返すことは問題ありません。(この問題を正確に説明している正規の SO 投稿が見つからなかったことを事前にお詫びします。)