0

これらのツールの両方で ajax を偽装できます。Sinon では、テストに便利なスタブ/スパイ/モックを作成できますが、mockjax では作成できません。ajax 呼び出しを偽造する場合、mockjax は Sinon よりも多くの機能を提供しますか? そうでない場合は、両方を使用しても意味がありません。

var response = [];
var statusCode = 200;
var responseTime = 0;

mockjax を使用して ajax 呼び出しを偽装する方法の例:

$.mockjax({
    url: server_api_url + "/Something/GetData",
    status: statusCode,
    responseTime: responseTime,
    contentType: "application/json",
    responseText: response
});

Sinon.js で ajax 呼び出しを偽造する方法の例:

var def = $.Deferred();
var stubGetData = sinon.stub(serverApiForSomething, "GetData");
def.resolve(response);
stubGetData.returns(def);

serverApiForSomething は、ajax 呼び出しをカプセル化するグローバル クラスです。

ServerApiForSomething = function()
{
    var self = this;
    self.GetData = function(param)
    {
        var ajaxOption = 
        {
            url:server_Api_Url + "/Something/GetData",
            type: "GET",
            data: { param.toJSON() },
            contentType: "application/json",
            dataType: "json"
        }
        return $.ajax(ajaxOption);
    }
}

serverApiForSomething = new ServerApiForSomething();
4

2 に答える 2

1

私は Mockjax プラグインのメンテナーです。Mockjaxにはajax呼び出しをモックするためのクールな組み込み機能がいくつかあるという@AXMIMのコメントに同意しますが、Sinonは任意のフレームワークで使用できるため、jQueryでのみ使用することも意図されています(ただし、完全にはありません)組み込みのクールなものと同じくらい)。

とはいえ、コードを見ると、その Sinon コードで Ajax 呼び出しを実際にモックしているわけではなく、GetDataメソッドをモックアウトしているのです。これも素晴らしいことですが、Mockjax の真の目的は、Ajax 呼び出しを排除し、他のすべてをそのままにしておくことです。適切な比較は、Sinon のFakeServer機能を使用することです。

本当に、Mockjax の構文の方が好きなら、両方を使用できます。それを使用して Ajax をモックし、Sinon を使用して成功およびエラー ハンドラーをスパイします。

于 2015-12-14T15:29:42.270 に答える