1
我有一個指令,我想單元測試。這工作,但我需要使用控制器中的服務。我如何去做這件事?如何爲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
如果我想在'it'部分替換testData的值來測試失敗會發生什麼。例如它('應該失敗',function(){service1.testData ='value to fail'}); – bkoya