Angularjs 函数错误中的Jasmine新函数
这是一个javascript源代码Angularjs 函数错误中的Jasmine新函数,angularjs,jasmine,Angularjs,Jasmine,这是一个javascript源代码 var app = angular.module("myApp", []); app.factory('AAA', function(){ return function(){ return { say:function(){ console.log('I am A'); } }; }; }); app.factory('helpMe',
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();
});
Jasmine souce不工作了
因为helpMe factory中的新AAA()和它中的新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();
}));