В моем блоке module.run он вызывает метод в службе, которую я создал. При выполнении моих тестов я хочу, чтобы он ссылался на макет службы вместо реального, который делает http-запросы. В настоящее время я пытаюсь протестировать контроллер, а не сам блок выполнения - как я могу вставить функцию mock в функцию запуска? Я попытался использовать $ provision.factory, но он ничего не делает и по-прежнему загружает службу как обычно.Вредоносная служба, введенная в блок запуска углового модуля
Я использую Жасмин, чтобы написать свои тесты.
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() });
}));
...........
});
тестирует блок запуска модуля, необходимый для вашего модульного тестирования? Угловая рекомендация состоит в том, чтобы объявить блок выполнения в изолированном модуле, чтобы его можно было легко игнорировать в модульных тестах, см. Https://docs.angularjs.org/guide/module#run-blocks –
Я не хочу тестировать прогон блок, но он выполняется автоматически, когда я загружаю модуль в свои тесты, а затем вызываю эту службу, которую я не хочу делать –