$ .ajaxへの呼び出しのために、sinon.js Fakeserverから発砲しないコールバック

StackOverflow https://stackoverflow.com/questions/9361958

質問

私は次のジャスミンの仕様を持っています:

describe "plugins", ->
    beforeEach ->
    @server = sinon.fakeServer.create()

    afterEach ->
    @server.restore()

    describe "reviewStatus", ->
    it "should attach dates to content", ->
      @server.respondWith("GET", "/GeneralDocument.mvc.aspx/GetDocumentParent?typeName=ncontinuity2.core.domain.Plan&documentParentUid=45f0bccb-27c9-410a-bca8-9ff900ab4c28d",
        [200, {"Content-Type": "application/json"},
        '{"ReviewDate":"22/09/2012","AcknowledgedDate":"05/07/2012"}'])   

      $('#jasmine_content').addReviewStatus('ncontinuity2.domain.Plan', "45f0bccb-27c9-410a-bca8-9ff900ab4c28")     

      @server.respond()

      expect($('#reviewDateTab').find("strong").eq(0).length).toEqual(1)

AddReviewStatusは私が書いたjQueryプラグインです。

do($ = jQuery) ->
    $.fn.extend
        addReviewStatus: (type, uid) ->
            ele = @

            reviewData = null           

            getJSON '/GeneralDocument.mvc.aspx/GetDocumentParent', {typeName: type, documentParentUid: uid}, 
                                (document) ->
                                    console.log('document = ' + document)
                                    compileTemplate(ele, document)
                                (response) ->
                                    showErrorMessage resonse.responseText
#etc., etc.

上記のgetjsonメソッドは、このような$ .ajaxを呼び出します:

function getJSON(url, params, ajaxCallBack, ajaxErrorHandler, excludeProgress){
    var e = (ajaxErrorHandler) ? ajaxErrorHandler : validationErrorCallBack;
    var s = (ajaxCallBack) ? ajaxCallBack : jsonCallBack;
    $.ajax({
        type: "GET",
        url: url,
        cache: false, 
        data: params,
        beforeSend: function(xhr) {
            xhr.setRequestHeader("Ajax", "true");
            xhr.setRequestHeader("UseAjaxError", "true");
        },
        complete: function() {
        },
        success: s,
        timeout: _ajaxTimeOut,
        dataType: "json",
        error: e
    });
}

GetJSONメソッドの匿名関数コールバックが起動されていません。また、$ .ajaxへの呼び出しは、見つかっていない404を返しています。誰かが私が間違っていることを見ることができますか?

役に立ちましたか?

解決

Sinon Fakeserverは、あなたがそれを呼び出したURLに応答が割り当てられていない場合、404を返します。

あなたの問題は、あなたが呼んでいるURLがそうではないということです ちょうど Respons()パラメーターの1つ。また、シノンのURL長に制限があるかもしれませんが、確かではありません。

他のヒント

私は同様の問題を抱えています。 Ajaxコールのキャッシュの順番に関連しているようです。私がそれを回避したら、もっと投稿します。テストのキャッシュをオフにして、それが通過するかどうかを確認してみてください。なぜそれが必要なのかわからない。

ロナン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top