茉莉在功能误差新功能
问题描述:
这是角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
}
};
});
这是茉莉源
it('helMe Test',function(){
var helpMe = new helpMe();
var AAA = new AAA();
spyOn(AAA,'say');
helpMe.play();
expect(AAA.say).toHaveBeenCalled();
});
茉莉烃源不工作 因为新的AAA()在helpMe工厂,和新的AAA在它(){}中是不同的。
答
您错过了依赖注入的整个观点,这正是为了避免创建协作者的实例,并让框架注入它们,以使代码可测试。
这是你的代码的重写版本:
var app = angular.module("myApp", []);
app.factory('AAA', function() {
return {
say: function() {
console.log('I am A');
}
};
});
app.factory('helpMe', function(AAA) {
var play = function() {
AAA.say();
};
return {
play: play
};
});
而且测试:
it('helMe Test', inject(function(AAA, helpMe) {
spyOn(AAA, 'say');
helpMe.play();
expect(AAA.say).toHaveBeenCalled();
}));