Backbone.js 如何在主干初始化方法中存根require.js模块

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

您好,我希望能够存根在主干对象初始化过程中被调用的requirejs模块。例如:

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模块中返回新组件会创建类似于单例的东西,而且非常方便。但我可能在这里开枪打自己的脚。让我想想