Jquery 如何测试主干。型号';委托给$.ajax的方法是什么?
当我用browserify编译Backbone.js时,它工作得很好,但是我很难在Mocha下测试我的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
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下的节点中运行我会说NodeJS中的jQuery是1)过度杀伤力(除非您的NodeJS应用程序使用jQuery-但我会说情况并非如此)2)在测试时不需要。由于您想要测试一个模型,您甚至可以模拟
sync()
(在测试其他所有内容时)或在测试sync()
时,使用一个简单的模拟jQuery对象定义主干。$
,只提供ajax()
,以满足测试依赖性。然后,您可以很容易地了解您的模拟ajax()
是如何被调用的。