茉莉在功能误差新功能

问题描述:

这是角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(); 
}));