Я пытаюсь протестировать контроллер, который зависит от службы, которую я создал сам. Я хотел бы издеваться над этой службой, так как служба общается с DOM.
Вот мой текущий тест:
describe('Player Controllers', function () {
beforeEach(function () {
this.addMatchers({
toEqualData: function (expected) {
return angular.equals(this.actual, expected);
}
});
});
describe('TestPSPlayerModule', function () {
var $httpBackend, scope, ctrl;
beforeEach(module('PSPlayerModule'));
beforeEach(inject(function (_$httpBackend_, $rootScope, $controller) {
$httpBackend = _$httpBackend_;
scope = $rootScope.$new();
ctrl = $controller(PlayerController, { $scope: scope });
}));
it('should request a clip url from the server when clipClicked is called', function () {
expect(1).toBe(1);
});
});
});
Мой контроллер выглядит так:
w.PlayerController = function ($scope, $http, $window, speedSlider, $location) {
...
}
так что я хочу издеваться над speedSlider.
У меня возникла идея использовать модуль, который я создал в своем тестовом коде, который мог бы обеспечить поддельную реализацию ползунка скорости, поэтому я добавил следующее в начало файла test.js:
module('TestPSPlayerModule', []).factory('speedSlider', function () {
return = {
...
};
});
а затем перечислите этот модуль в вызове beforeEach ()вместо конкретного, но если я это сделаю, я получу следующую ошибку:
Injector already created, can not register a module!
Поэтому я полагаю, что для меня должен быть лучший способ предоставить фиктивную реализацию одного из моих сервисов. Что-то, что я мог бы использовать sinon.js для....