У меня есть вызов функции сервиса в контроллере. Ниже приведен кодтестирование .success и .error службы в контроллере jasmine
Сервис
(function() {
'use strict';
angular.module('MyApp')
.service('MyService', ['$http', function ($http) {
return {
getMyData: function (extension) {
return $http.get('www.something.com');
}
};
}])
})();
Контроллер
var getMyData = function() {
MyService.getMyData(extension).success(function (results) {
//Some functionality here
})
.error(function (err, status) {
//Some functionality here
});
}
$scope.Call=function(){
getMyData();
}
$scope.Call();
Теперь, пожалуйста, скажите мне, как издеваются вызов службы (может быть с поставщиками). Как протестировать вышеуказанные функции с полным охватом кода.
Мой файл спецификации:
$provide.service("MyService", function() {
this.getMyData= function() {
var result = {
success: function (callback) {
return callback({ ServerFileName: "myserverfilename"});
},
error: function (callback) {
return callback({ ServerFileName: "myserverfilename" });
}
};
return result;
}
//......
my controller initiation and other code
Этот код не покрывает блок ошибок и дает ошибку
Cannot read property 'error' of undefined
Пожалуйста, помогите мне, как писать/глумиться функцию getMyData моей службы в мой файл спецификации
Заранее спасибо.
где я должен писать этот код внутри поставщика или spec (it)? – aditya
Вы должны написать это раньше. Что-то вроде этого:. beforeEach (angular.mock.inject ((MyService) => { вар _myService = MyService; spyOn (_myService, "getMyData") and.callFake (() => { возвращение { ошибка: (обратный вызов) => { обратный обратный вызов ({});} }; });} –
Когда я делаю это в beforeEach он показывает ошибку «MyService.getMyData (...). успех не является функцией « – aditya