在我的module.run模塊中,它調用了我所做服務的方法。在運行我的測試時,我希望它引用一個模擬服務,而不是真正的http請求。我目前正在嘗試測試一個控制器,而不是實際的運行模塊本身 - 我如何將模擬服務注入運行功能?我曾嘗試使用$ provide.factory,但它似乎沒有做任何事情,並仍然正常加載服務。將模擬服務注入到Angular模塊運行模塊
我正在使用茉莉花寫我的測試。
app.js
angular.module("app")
.run(function(MyService) {
MyService.log("starting app");
});
test.js
describe("MyController", function() {
beforeEach(function() {
module(function ($provide) {
$provide.factory("MyService", { log: function(){} });
});
});
// I want module 'app' to execute its run function using injected value for MyService
beforeEach(module("app"));
beforeEach(inject(function($controller, $rootScope) {
MyController = $controller("MyController", { $scope: $rootScope.$new() });
}));
...........
});
正在測試模塊的運行塊你的基本單元測試? Angular的建議是在獨立模塊中聲明運行塊,以便在單元測試中很容易忽略它,請參閱https://docs.angularjs.org/guide/module#run-blocks –
我不想測試運行塊,但它在我的測試中加載模塊時自動執行,然後調用我不想要的服務 –