2015-06-29 4 views
3

Я пытаюсь выполнить тестирование службы, которая использует репозиторий, который, в свою очередь, возвращает обещание потребителю.
У меня проблемы с проверкой обещания, или я должен сказать, что не знаю, как проверить обещание.
Любая помощь будет оценена!
Служба тестирования Unitularjs с обещанием

+0

Я не понимаю, почему вы используете обещания на свой тест. Я бы просто вернул значение для шпиона getData. На тестовом угловом вызове '$ scope. $ Digest()' это должен быть вызов вручную при использовании $ httpBackend модуля. Я предлагаю вам использовать $ httpBackend для издевательства над вызовом ajax, а затем '$ scope.digest' – Raulucco

+0

Вышеупомянутый комментарий неверен, я смутил цикл дайджеста с помощью метода flush $ httpBackend. В любом случае при тестировании директивы ort контроллер может быть полезен для использования метода дайджеста объекта $ scope – Raulucco

ответ

1

Это тест с $httpBackend и для издевательского обслуживания.

var describe = window.describe, 
    beforeEach = window.beforeEach, 
    afterEach = window.afterEach, 
    it = window.it, 
    expect = window.expect, 
    inject = window.inject, 
    module = window.module, 
    angular = window.angular, 
    serviceURL = '/' + Techsson.Core.Global.Language + '/api/sessionlimit/getdata', 
    $scope, 
    sessionLimitServiceResponse; 

describe('Jasmine - SessionLimitService', function() { 

    beforeEach(module('sessionlimit.module')); 

    var sessionLimitServiceMock, q; 

    beforeEach(inject(function (_SessionLimitService_, _SessionLimitResository_, $httpBackend, $rootScope) { 
     sessionLimitServiceMock = _SessionLimitService_; 
//remove the use of global variables 
    $httpBackend.when('GET', serviceURL) 
          .respond('foo', {/*Headers*/}); 
     })); 

    it("Content array must be empty", function() { 
     expect(sessionLimitServiceMock.content.length).toEqual(0); 
    }); 

    it('Content array must have a value', function() { 
     $httpBackend.expectGET(serviceURL); 
     sessionLimitServiceMock.getData().then(function(value) { 
      expect(value).toEqual('foo'); // NOTHING HAPPENS 
     }); 
     $httpBackend.flush(); 
     }); 
    }); 
+0

Спасибо за ваш ответ. Я получаю значение как неопределенное в приведенном выше примере. Pls см. Выше. – Grendizer

+0

Да, это скорее '$ httpBackend.flush()' вместо '$ scope. $ Digest()' в соответствии с документами. Я обновлю пример – Raulucco

+0

Привет! Я все еще получаю значение как undefined ... Я снова обновил код выше ... – Grendizer