単一のテスト仕様から複数の ajax リクエストをスパイすることはできません。JASMINE を使用して以下をテストしたいと考えていmyFirstFunction()
ますmySecondFunction()
。
function myFirstFunction() {
$.postJSON('test1.htm', {operation:operation}, function (data) {
if (data != null && data.errorMsg != null && data.errorMsg.length > 0) {
$.populateErrorMessage(data);
} else {
operationAccess = data;
var tempAccessFlag = operationAccess[0].accessFlag;
if (tempAccessFlag) {
mySecondFunction();
}
}
});
}
function mySecondFunction(operation, operationAccess, reason) {
$.postJSON('test2.htm', {windowStart:0, windowSize:4}, function (data) {
if (data != null && data.errorMsg != null && data.errorMsg.length > 0) {
$.populateErrorMessage(data);
} else {
if (null != data && data.accessFlag == "SUCCESS") {
//do something
} else {
//do something
}
}
});
}
私は次のテスト仕様を書きました & 次のように最初の postJSON をスパイすることができます -
it("Test myFirstFunction & mySecondFunction", function () {
var operation = "customerPreviousOrder";
var myFirstFunctionData = [{"accessFlag":true}]
spyOn($, "ajax").andCallFake(function(params) {
params.success(myFirstFunctionData);
});
myFirstFunction();
expect(<Something>).toEqual(<Something>);
});
mySecondFunction()
上記のテスト仕様からテストしたい。myFirstFunction()
を呼び出すためですmySecondFunction()
。では、どうすれば 2 番目の postJSON をスパイできますか?