Backbone.js 如何在主干初始化方法中存根require.js模块
您好,我希望能够存根在主干对象初始化过程中被调用的requirejs模块。例如:Backbone.js 如何在主干初始化方法中存根require.js模块,backbone.js,requirejs,jasmine,Backbone.js,Requirejs,Jasmine,您好,我希望能够存根在主干对象初始化过程中被调用的requirejs模块。例如: define(function(require){ var Backbone = require("backbone"), BalanceModule = require("BalanceModule"); return Backbone.View.extend({ initialize: function(){ this.balance = Ba
define(function(require){
var Backbone = require("backbone"),
BalanceModule = require("BalanceModule");
return Backbone.View.extend({
initialize: function(){
this.balance = BalanceModule.requestBalance();
}
});
})
我希望能够存根BalanceModule,但由于在初始化方法中,我无法
我可以存根initialize方法,但这意味着我有要在测试中测试的代码
我试图要求取消定义模块并加载另一个模块,但没有成功。似乎一旦初始化了对象,它就有一个无法覆盖的内部引用
有什么想法吗?您可以这样修改平衡模块:
define({
var BalanceModule = function(){
}
return BalanceModule;
});
define(function(require){
var Backbone = require("backbone"),
BalanceModule = require("BalanceModule");
return Backbone.View.extend({
initialize: function(){
this.balance = new BalanceModule().requestBalance();
}
});
})
而不是:
define({
var BalanceModule = function(){
}
return new BalanceModule();
});
所以你可以这样使用:
define({
var BalanceModule = function(){
}
return BalanceModule;
});
define(function(require){
var Backbone = require("backbone"),
BalanceModule = require("BalanceModule");
return Backbone.View.extend({
initialize: function(){
this.balance = new BalanceModule().requestBalance();
}
});
})
嗯,我想你是对的。我发现在AMD模块中返回新组件会创建类似于单例的东西,而且非常方便。但我可能在这里开枪打自己的脚。让我想想