茉莉花测试:如何监视特殊功能?

时间:2015-04-20 08:37:15

标签: javascript testing backbone.js jasmine spy

我是测试,Jasmine和Javascript的新手,也许这个问题很简单。我必须用Jasmine测试一个函数:

define(["module", ...], function(Module, ...){
    //...
    action: function(){
        //...
        Backbone.history.navigate('companies', {trigger: true});
        //...
    }
}

测试如下:

describe("function action", function() {
    it ("calls Backbone.history.navigate()", function(){
        spyOn(module, "Backbone.history.navigate");
        module.action();
        expect(Backbone.history.navigate()).toHaveBeenCalled();
    });
});

但这不起作用。它说:

Error: Backbone.history.navigate() method does not exist

我该怎么做才能窥探该方法? 我已经尝试在运行该函数之前加载backbone.js文件,但这并未改变任何内容。

2 个答案:

答案 0 :(得分:3)

你可以写

spyOn( Backbone.history, 'navigate' );

然后

expect( Backbone.history.navigate ).toHaveBeenCalled();

可能的缺点可能是,如果您并行执行测试并且Backbone.history.navigate被一次测试监视并被另一次测试使用,则可能没有预期的结果。

答案 1 :(得分:0)

您应该尝试以下

var backbone_historySpy=spyOn(Backbone,'history.navigate');
describe('testing function action:',function(){
it('expect Backbone.history.navigate() to be called',function(){
module.action();
expect(backbone_historySpy).toHaveBeenCalled();
});
});

应该有效