我創建了一個角度自定義指令,其中包含一個名爲scriptingService的服務。目標是用spyOn嘲笑服務呼叫。這是測試的一部分:如何在茉莉花測試中模擬servicecall?
beforeEach(inject(function ($rootScope, $compile,_scriptingService_) {
scope = $rootScope.$new();
scope.row = 1;
scriptingService = _scriptingService_;
Restangular = _Restangular_;
spyOn(Restangular, 'all').and.callThrough();
spyOn(scriptingService, 'getScript').and.callThrough();
element = angular.element('<ul id="rows" ui-list="row">');
$compile(element)(scope);
scope.$digest();
}));
這是指令代碼:
.directive('uiList', [
function(scriptingService) {
return {
scope: {
lengthModel: '=uiList'
},
link: function(scope, elm, attrs) {
scope.$watch('lengthModel', function(newVal) {
scope.test=2;
console.log('kut');
scriptingService.getScript(request).then(function(scripts){
scope.scripts = scripts;
});
});
}
};
}
]);
但是我得到一個錯誤:
RestangularProvider <- Restangular <- scriptingService
我怎麼能嘲笑scriptingService並確保該方法被稱爲? Plunker編號:http://plnkr.co/edit/CDc7EV?p=preview
你plunkr有幾個問題:老茉莉版本的新語法結合起來,and.callThrough()不工作1.3.1(更新茉莉或使用和CallThrough()),並且您的腳本服務在plunkr中不存在。 由於沒有向模塊註冊此類服務,因此預計在PLUNK上會出現「未知提供者」錯誤。 –
我更新了plunkr並添加了scriptService。我嘲笑了Restangular,但仍然收到錯誤:錯誤:未知的提供者:RestangularProvider < - Restangular < - scriptingService –
我無法在http://plnkr.co/edit/uhyzg6?p=preview –