【问题标题】:Testing of Backbone code inside anonymous function using Jasmine and Sinon使用 Jasmine 和 Sinon 测试匿名函数内的 Backbone 代码
【发布时间】:2013-10-16 14:24:37
【问题描述】:

这是我的代码中的 sn-p

(function(){
var BootModel = Backbone.View.extend();
    var BootApp = Backbone.View.extend({
    initialize : function(options) {
            //some logical code
    },
    render : function() {
        //some more logical code
    }
});
new BootApp({
    aggregatedEvent : _.extend({}, Backbone.Events),
    model: new BootModel()
});
})();

现在你可以看到我的视图中有逻辑代码,我需要使用 Jasmine 测试这些视图,但在我的情况下,一切都在私有范围内(我这样做是为了防止从外部开发工具访问我的代码像萤火虫和修改我的模型或任何属性状态)

我尝试了很多东西来调查Sinon以了解我是否可以使用Spy,但对我没有任何帮助

类似的问题可能是:Anonymous function in Coffeescript how to test it

我想知道我哪里出错了? 我将所有内容隐藏在匿名函数中的方法是错误的吗? 如果是,那么这种实施的最佳做法是什么? 如果否,那么我将如何测试这种代码

PS:我不赞成后门操纵。

提前感谢您的帮助

【问题讨论】:

  • 我认为您将不得不重构您的代码以使这些视图可供外界访问。如果你愿意,你仍然可以使用你的构建/部署系统在一个函数中将它们混合在一起。要么,要么您需要测试硬接线的钩子,以便您可以进入该功能并添加间谍。
  • @muistooshort 谢谢我正在尝试将所有内容都放在全局命名空间范围内
  • 我们可以给你一些测试代码吗?

标签: testing backbone.js bdd jasmine sinon


【解决方案1】:

spy 替换了它正在监视的函数,所以这样使用它:

describe("Backbone View Tester", foo)

function foo()
 {
 it('should work' , bar)
 }

function bar()
 {
 spyOn(foo, 'setbar');
 spyOn(foo, 'setbaz').and.callThrough();

 foo.setbar = function()
            {
            var BootModel = Backbone.View.extend();
            var BootApp = Backbone.View.extend({
            initialize : function(options) 
               {
               //some logical code
               },
            render : function() 
               {
               //some more logical code
               }
            };

  foo.setbaz = new BootApp(
            {
            aggregatedEvent : _.extend({}, Backbone.Events),
            model: new BootModel()
            });
        };

 foo.setbar();
 foo.setbaz();

 expect(_.extend).toHaveBeenCalled();
 expect(Backbone.View.extend).toHaveBeenCalled();
 }

参考文献

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 2013-08-11
    • 2013-03-17
    相关资源
    最近更新 更多