我是测试,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文件,但这并未改变任何内容。
答案 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();
});
});
应该有效