У меня есть директива о том, что я хочу выполнить единичный тест. Это работает, но мне нужно использовать службу в контроллере. Как мне это сделать?Как высмеять сервис для контроллера директивы angularjs
app.directive('myDirective', function() {
return {
restrict: 'EA',
scope: true,
templateUrl: 'my-directive.html',
controllerAs: 'md',
link:function (scope){
},
controller: function($scope, $element, $stateParams,service1) {
this.test = service1.testData;
}
}
});
И мой блок тестовый файл до сих пор
describe("Directive : my directive", function() {
var element, scope, controller, service1,stateParams;
beforeEach(module("app"));
beforeEach(module('src/templates/my-directive.html'));
beforeEach(function() {
service1 = {
method : {
name : "Test"
}
};
});
beforeEach(inject(function($compile, $rootScope) {
scope = $rootScope.$new();
element = "<my-directive></my-directive>";
element = $compile(element)(scope);
scope.$digest();
controller = element.controller("myDirective");
}));
it("should do something to the scope", function() {
// test functions using service1
})
});
и моя служба
app.factory('service1', function(){
service1.testData = false;
service1.myPromise = function (t) {
var deferred = $q.defer();
$http.get("....")
.success(function(result) {
deferred.resolve(result)
})
.error(function(error) {
deferred.reject(error)
});
return deferred.promise;
}
});
Как добавить мою высмеивал услугу мой контроллер?
работает для меня :) спасибо @Puigcerber – bkoya
Прохладный! Теперь вы можете принять ответ @bkoya;) – Puigcerber
Что произойдет, если я хочу заменить значение testData в части «it», чтобы протестировать ошибку. например, он ('should fail', function() {service1.testData = 'значение сбой "}); – bkoya