Javascript 成功时Sinon.js内联回调

Javascript 成功时Sinon.js内联回调,javascript,jquery,ajax,callback,sinon,Javascript,Jquery,Ajax,Callback,Sinon,我正在使用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

我正在使用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'),
  });
预期的执行行为是
function
,然后是
functionB
。 如果我写它,它会工作吗?[functionA(),functionB()]:console.log('Error')这样。为什么没有括号就不能工作

编辑1: 两个函数A和B都包含一个
console.log('Working!')如果我看到2
工作,我知道代码工作正常控制台中的日志。我知道请求成功是因为
server.requests
不是空的,并且
server.requests[0]
包含所有其他AJAX调用属性,例如:contentType、type、url和数据

下面是我的QUnit设置代码在
sinon
中的样子(这会截取测试期间进行的所有AJAX调用):


这个问题是由我的设置引起的。由于安全配置(与url有关),AJAX调用正在中止,因此没有执行任何内联函数。在
[function(),functionB()]
中添加括号只起作用,因为函数将在调用期间执行,而不是作为调用的结果。此外,如果
typeof function=='function'&&typeof functionB=='function'
返回
true
,则无论调用是否实际执行,这两个函数都将执行


我通过更改一些安全配置解决了这个问题。本质上是“白名单”某些要发布的文件。感谢所有帮助过我的人

因为你没有打电话给他们。@DaveNewton它在实际的应用程序(外部单元测试)中起作用。我的错——我甚至不知道你能做到,但看起来你能做到。如果他们没有被调用,那就意味着请求没有成功,不是吗?请求成功了!在测试场景中,它们不会被“执行”。我有一种强烈的感觉,这与Sinon.js(嗅探AJAX post请求,可能“创建”函数,但不实际运行它们)有关,你怎么知道?如果没有调用这些函数,有什么成功的迹象?没有错误处理程序,很难说。在任何情况下,不知道如何帮助没有更多的信息。
QUnit.module('unit tests', {
    beforeEach: function() {
        server = sinon.fakeServer.create();
    },  
    afterEach: function() {
        delete server;
    }
});