这是有角度的javascript源
var app = angular.module("myApp", []);
app.factory('AAA', function(){
return function(){
return {
say:function(){
console.log('I am A');
}
};
};
});
app.factory('helpMe', function(AAA){
return function(){
var type = new AAA();
var play = function(){
type.say();
};
return {
play:play
}
};
});
这是Jasmine Source
it('helMe Test',function(){
var helpMe = new helpMe();
var AAA = new AAA();
spyOn(AAA,'say');
helpMe.play();
expect(AAA.say).toHaveBeenCalled();
});
茉莉花源不起作用 因为helpMe工厂中的新AAA()和它中的新AAA(){}是不同的。
答案 0 :(得分:2)
你错过了依赖注入的全部内容,这正是为了避免创建协作者的实例,而是让框架注入它们,以使代码可以测试。
这是您的代码的重写版本:
it('helMe Test', inject(function(AAA, helpMe) {
spyOn(AAA, 'say');
helpMe.play();
expect(AAA.say).toHaveBeenCalled();
}));
测试:
{{1}}