Sinon.js 成功时内联回调
Sinon.js inline callback on success
我正在使用 QUnit、Sinon.js (fakeServer) 和 jQuery (AJAX) 来捕获和测试程序中的 AJAX 调用。我遇到了一个问题(不一致),即内联函数调用没有被执行。
$.ajax({
contentType: 'application/x-www-form-urlencoded',
async: bAsynchronous,
type: 'POST',
url: url,
data: content + getSecurityURL(url,sData), //we need to pass the information for security.
success: typeof functionA == 'function' && typeof functionB == 'function'
? [functionA, functionB] : console.log('Error'),
});
预期的执行行为是 functionA
后跟 functionB
。
它有效,如果我这样写它? [functionA(), functionB()] : console.log('Error')
。为什么没有括号就不行?
编辑 1:
函数 A 和 B 都包含 console.log('Working!');
如果我在控制台中看到 2 Working!
日志,我知道代码可以正常工作。我知道请求成功是因为 server.requests
不为空并且 server.requests[0]
包含所有其他 AJAX 调用属性,例如:contentType、type、url & data。
下面是我的 QUnit 设置代码 sinon
的样子(这拦截了测试期间进行的所有 AJAX 调用):
QUnit.module('unit tests', {
beforeEach: function() {
server = sinon.fakeServer.create();
},
afterEach: function() {
delete server;
}
});
问题是由我的设置引起的。由于安全配置(与 url 有关),AJAX 调用正在 中止 ,因此没有执行任何内联函数。在 [functionA(), functionB()]
中添加方括号之所以有效,是因为函数会在 调用期间执行 ,但不是调用的结果。此外,如果 typeof functionA == 'function' && typeof functionB == 'function'
返回 true
,无论调用是否实际通过,这两个函数都会执行。
我通过更改一些安全配置解决了这个问题。本质上"whitelisting"某些文件要POSTED
到。感谢所有帮助过的人!
我正在使用 QUnit、Sinon.js (fakeServer) 和 jQuery (AJAX) 来捕获和测试程序中的 AJAX 调用。我遇到了一个问题(不一致),即内联函数调用没有被执行。
$.ajax({
contentType: 'application/x-www-form-urlencoded',
async: bAsynchronous,
type: 'POST',
url: url,
data: content + getSecurityURL(url,sData), //we need to pass the information for security.
success: typeof functionA == 'function' && typeof functionB == 'function'
? [functionA, functionB] : console.log('Error'),
});
预期的执行行为是 functionA
后跟 functionB
。
它有效,如果我这样写它? [functionA(), functionB()] : console.log('Error')
。为什么没有括号就不行?
编辑 1:
函数 A 和 B 都包含 console.log('Working!');
如果我在控制台中看到 2 Working!
日志,我知道代码可以正常工作。我知道请求成功是因为 server.requests
不为空并且 server.requests[0]
包含所有其他 AJAX 调用属性,例如:contentType、type、url & data。
下面是我的 QUnit 设置代码 sinon
的样子(这拦截了测试期间进行的所有 AJAX 调用):
QUnit.module('unit tests', {
beforeEach: function() {
server = sinon.fakeServer.create();
},
afterEach: function() {
delete server;
}
});
问题是由我的设置引起的。由于安全配置(与 url 有关),AJAX 调用正在 中止 ,因此没有执行任何内联函数。在 [functionA(), functionB()]
中添加方括号之所以有效,是因为函数会在 调用期间执行 ,但不是调用的结果。此外,如果 typeof functionA == 'function' && typeof functionB == 'function'
返回 true
,无论调用是否实际通过,这两个函数都会执行。
我通过更改一些安全配置解决了这个问题。本质上"whitelisting"某些文件要POSTED
到。感谢所有帮助过的人!