我是Testing,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


我必须做什么才能监视该方法?
在运行该函数之前,我已经尝试加载了ribs.js文件,但这并没有改变任何东西。

最佳答案

你可以写

spyOn( Backbone.history, 'navigate' );


接着

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


可能的不利之处是,如果您曾经并行执行测试,并且Backbone.history.navigate被一个测试监视并且被另一个测试使用,则您可能没有预期的结果。

关于javascript - Jasmine 测试:如何监视特殊功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29742898/

10-15 09:33