$ .ajaxへの呼び出しのために、sinon.js Fakeserverから発砲しないコールバック
-
28-10-2019 - |
質問
私は次のジャスミンの仕様を持っています:
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コールのキャッシュの順番に関連しているようです。私がそれを回避したら、もっと投稿します。テストのキャッシュをオフにして、それが通過するかどうかを確認してみてください。なぜそれが必要なのかわからない。
ロナン
所属していません StackOverflow