Как проверить $ http сервис в жасмине

0

Ниже моего кода я создал небольшое приложение 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 и попытался протестировать, но до сих пор не получил правильного ответа.

Спасибо в продвижении дорогих друзей.. АК..

  • 0
    Можете ли вы быть более конкретным в своей проблеме?
  • 0
    это моя директива: app.directive ('guestDir', function () {return function ($ scope, GuestDatas, $ http) {var refresh = function () {var обещание = GuestDatas.getAllGuest (); обещание .success (функция (data) {$ scope.guestList = data; $ scope.newContact = "";});} refresh ();}); это моя фабрика: app.factory ("GuestDatas", function ($ http) {return {getAllGuest: function () {var url = '/ guestDetails'; return $ http.get (url);},}}); Обновить fn вернет все гостевые данные в моей базе данных. Можете ли вы помочь мне проверить эту услугу.
Показать ещё 1 комментарий
Теги:
testing

1 ответ

1

Вы можете использовать $httpBackend сервис $httpBackend для тестирования $http в $httpBackend

  • 0
    да, я пытался .. все еще я боролся .. не могли бы вы рассказать мне, как проверить функцию ссылки в директиве.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню