Ниже моего кода я создал небольшое приложение MEAN. Я не знаю, как тестировать сервис. пожалуйста помогите
var app = angular.module('guestPhoneBook',[]);
app.config(function($interpolateProvider,$compileProvider){
$interpolateProvider.startSymbol("{[{");
$interpolateProvider.endSymbol("}]}");
$compileProvider.debugInfoEnabled(false);
});
app.run(function($rootScope){
$rootScope.company = "IGATE";
});
app.directive('guestDir',function(){
return function($scope, GuestDatas, $http){
var refresh = function(){
var promise = GuestDatas.getAllGuest();
promise.success(function(data){
$scope.guestList = data;
$scope.newContact ="";
});
}
refresh();
$scope.addNewContact = function(){
promise = GuestDatas.addNewGuest($scope.newContact);
promise.success(function(){
refresh();
});
}
$scope.deleteGuest = function(id){
promise = GuestDatas.deleteGuest(id);
promise.success(function(data){
refresh();
});
}
$scope.edit = function(id){
promise = GuestDatas.editGuest(id);
promise.success(function(data){
$scope.updateShow = true;
$scope.newContact = data;
});
};
$scope.updateGuestData = function(){
//console.log($scope.newContact);
promise = GuestDatas.updateGuest($scope.newContact);
promise.success(function(data){
refresh();
});
}
}
});
/*
app.service('AddService',function(){
this.add = function(a,b){
return a+b;
}
});
*/
app.controller('guestCtrl',function($scope){
$scope.updateShow = false;
//$scope.addResult = AddService.add(5,6);
});
app.factory("GuestDatas",function($http){
return {
getAllGuest : function(){
var url = '/guestDetails';
return $http.get(url);
},
addNewGuest:function(newGuest){
var url = '/guestDetails';
return $http.post(url,newGuest);
},
deleteGuest:function(id){
var url ='/guestDetails/'+id;
return $http.delete(url);
},
editGuest:function(id){
var url='/guestDetails/'+id;
$http.put(url);
},
updateGuest:function(guestData,fn){
console.log(guestData);
var url = "/guestDetails/"+guestData._id;
$http.put(url,guestData);
}
}
});
describe("Testing app.js", function() {
var myController;
var scope;
var rootScope,httpBackend,factory;
beforeEach(module('guestPhoneBook'));
beforeEach(inject(function($controller,$rootScope,GuestDatas,$http,$httpBackend){
rootScope = $rootScope;
scope = rootScope.$new();
myController = $controller('guestCtrl',{$scope:scope});
factory = GuestDatas;
httpBackend = $httpBackend;
}));
it('should have controller named guestCtrl',function(){
expect(myController).toBeDefined();
});
it('should have updateShow object and attached to scope',function(){
expect(scope.updateShow).toBeDefined();
expect(scope.updateShow).toBeFalsy();
});
it("API method to be defined",function(){
expect(factory.getAllGuest).toBeDefined();
expect(factory.addNewGuest).toBeDefined();
expect(factory.deleteGuest).toBeDefined();
expect(factory.editGuest).toBeDefined();
expect(factory.updateGuest).toBeDefined();
});
it("API method to be function",function(){
expect(factory.getAllGuest).toEqual(jasmine.any(Function));
expect(factory.addNewGuest).toEqual(jasmine.any(Function));
expect(factory.deleteGuest).toEqual(jasmine.any(Function));
expect(factory.editGuest).toEqual(jasmine.any(Function));
expect(factory.updateGuest).toEqual(jasmine.any(Function));
//factory.getAllGuest(fn);
});
it("testing http call", function(){
httpBackend.when('GET', '/guestDetails').respond(200,{});
expect(httpBackend.flush).not.toThrow();
//httpBackend.expect('GET', '/guestDetails').respond(1200);
});
});
Пожалуйста, помогите мне проверить сервис внутри моей директивы. В моем тестовом файле. Я сохранил локальные данные j_son и попытался протестировать, но до сих пор не получил правильного ответа.
Спасибо в продвижении дорогих друзей.. АК..
Вы можете использовать $httpBackend
сервис $httpBackend
для тестирования $http
в $httpBackend