qunitとmockjaxを使用してフロントエンド コードをテストしています。mockjax 独自のテスト コードでの AJAX テストの構造は次のようになります ( jsfiddle )。
var testURL = "/test/data",
testData = { a: 1, b: "c" };
asyncTest("AJAX response test", 1, function() {
$.mockjax({
url: testURL,
responseText : JSON.stringify(testData)
});
$.ajax({
url: testURL,
dataType: "json",
success: function(data) {
deepEqual(data, testData, 'AJAX response is OK');
},
complete: function() {
start();
}
});
$.mockjaxClear();
});
mockjaxのドキュメントによると:
* $.mockjaxClear()
Removes all mockjax handlers.
私が理解していないのは、呼び出しmockjaxClear
の直後に呼び出される理由です$.ajax()
。問題は、ドキュメントにあるように、何らかのクリーンアップを行う場合、AJAX 応答が到着する前にこのクリーンアップが実行されることです (この jsfiddleのコンソールを参照してください)。complete
イベントのハンドラーでクリーンアップを行う方が論理的に思えます。後に mockjaxClear を呼び出す方が良い理由を誰かに説明してもらえます$.ajax()
か?