Jquery 如何测试主干。型号';委托给$.ajax的方法是什么?

Jquery 如何测试主干。型号';委托给$.ajax的方法是什么?,jquery,node.js,backbone.js,mocha.js,backbone-model,Jquery,Node.js,Backbone.js,Mocha.js,Backbone Model,当我用browserify编译Backbone.js时,它工作得很好,但是我很难在Mocha下测试我的Backbone.Model。当我这样做的时候,我得到 TypeError: Cannot read property 'apply' of undefined at Object.Backbone.ajax (/node_modules/backbone/backbone.js:1409:27) backbone.js,第1409行 return Backbone.$.ajax.appl

当我用browserify编译Backbone.js时,它工作得很好,但是我很难在Mocha下测试我的
Backbone.Model
。当我这样做的时候,我得到

TypeError: Cannot read property 'apply' of undefined
  at Object.Backbone.ajax (/node_modules/backbone/backbone.js:1409:27)
backbone.js,第1409行

return Backbone.$.ajax.apply(Backbone.$, arguments);
因此,
主干。$
没有被定义。。问题是我正在使用node/CommonJS,显然(试图)设置它。。。同样,这在browserify下有效

var Backbone = require('backbone');
Backbone.$ = require('jquery);
我可以通过搜索论坛看到其他人也有这个问题。也许在节点中运行jQuery是不可能的?我从节点REPL shell尝试了它

var $ = require('jquery'); $.ajax();
TypeError: $.ajax is not a function
还有,一些新的东西

var $ = require('jquery')(global); $.ajax();
Error: jQuery requires a window with a document
还是没有乐趣。。有什么想法吗

  • 如何使我的
    主干.Model
    .save
    (哪些委托给jQuery)在browserify之外运行,并在Mocha下的节点中运行
  • 我可以在Mocha测试套件和浏览器下使用相同的源主干模型透明地执行此操作吗

  • 我会说NodeJS中的jQuery是1)过度杀伤力(除非您的NodeJS应用程序使用jQuery-但我会说情况并非如此)2)在测试时不需要。由于您想要测试一个模型,您甚至可以模拟
    sync()
    (在测试其他所有内容时)或在测试
    sync()
    时,使用一个简单的模拟jQuery对象定义
    主干。$
    ,只提供
    ajax()
    ,以满足测试依赖性。然后,您可以很容易地了解您的模拟
    ajax()
    是如何被调用的。