angular怎么知道$httpBackend正在angularjs测试中取代$http



我有一个名为myFactory的工厂,它具有$http依赖项。在我的测试中,我想模拟这种依赖关系。我发现我可以使用$httpBackend来实现它。我使用了下面的代码,它很有效。但我不明白为什么。angular在什么时候知道httpBackend实际上正在取代myFactory中的$http?

beforeEach(inject(function(_myFactory_, _$httpBackend_){
    myFactory = _myFactory_;
    $httpBackend = _$httpBackend_;
}));

它并没有取代$http,而是取代了一个名为$httpBackend的服务,因为它只在内部使用过。Angular使用了许多"私人"服务。因此,$http通常会注入真正的$httpBackend,但当angular-mocks.js加载时(在angular.js之后,顺序很重要),它基本上会用mock覆盖真正的$httpsBackend。

最新更新