1

動作する ajax 呼び出しコードを以下に示します

$('#callControllerBtn').click(function () {
    currentlySelectedRow = grid.select();
    sendProductIDToController(currentlySelectedRow);
});

function sendProductIDToController(currentlySelectedRow) {
    $.ajax({
        url: "Home/sendProductID/", // Home = Controller , sendProductID = Action
        data: {
            ID: pID
        },
        cache: false,
        type: "POST",
        timeout: 10000,
        dataType: "json",
        success: function (result) {
            if (result) {
                alert("Successfully Completed");
                grid.removeRow(currentlySelectedRow);
                editor.value("");
            } else {
                alert("Failed");
            }
        }
    });
}

今、私は同じコードを書きたいのですが、JS テスト メソッドを使用しています。対 2010 で QUnit、ChutzPah を使用しています。モック/偽の ajax 呼び出しもテスト メソッドで動作するコードを実装するための良い方法を教えてください。

4

2 に答える 2

1

http://net.tutsplus.com/tutorials/javascript-ajax/how-to-test-your-javascript-code-with-qunit/

非同期の章をチェックしてください。

$ .ajax()オブジェクトのリテラル引数でJQueryフィクスチャプロパティを使用して、ajax呼び出しを再ルーティングする必要がある静的ファイルを指定できます。JMVCドキュメントのフィクスチャの適切な説明は次のとおりです。

http://javascriptmvc.com/docs.html#!jQuery.fixture

于 2013-01-29T18:23:53.393 に答える
0

この質問は古いことは知っていますが、同じ問題がありました。これが私が修正した方法です:

$.ajax 関数をハイジャックして、呼び出しを行わないようにしました。

var $.ajaxResults = [];

$.ajax = function(options) {
    $.ajaxResults.push(options);
}

場合によっては、すべてのパラメーターなどをキャッチするために、ここでさらに複雑なコードが必要になるでしょう。しかし、私のアプリケーションでは常に $.ajax(options) を使用しています

次に、テストでこれを行うことができます:

// the code below initializes the control and triggers an ajax call
$('#ddTest').dropdown();

// check if the ajax call was triggered
equal($.ajaxResults.length, 1, "there is one registered ajax call");

// ajax callback -> run the callback with fake data to populate the control
$.ajaxResults[0].success([
    { value: '1', label: 'one' },
    { value: '2', label: 'two' },
    { value: '3', label: 'three' }
]);

このようにして、呼び出しパラメーターとコールバック関数の両方を確認できます

于 2014-11-19T14:10:29.490 に答える