Я пытаюсь выполнить тестирование службы, которая использует репозиторий, который, в свою очередь, возвращает обещание потребителю.
У меня проблемы с проверкой обещания, или я должен сказать, что не знаю, как проверить обещание.
Любая помощь будет оценена!
Служба тестирования Unitularjs с обещанием
ответ
Это тест с $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();
});
});
Спасибо за ваш ответ. Я получаю значение как неопределенное в приведенном выше примере. Pls см. Выше. – Grendizer
Да, это скорее '$ httpBackend.flush()' вместо '$ scope. $ Digest()' в соответствии с документами. Я обновлю пример – Raulucco
Привет! Я все еще получаю значение как undefined ... Я снова обновил код выше ... – Grendizer
Я не понимаю, почему вы используете обещания на свой тест. Я бы просто вернул значение для шпиона getData. На тестовом угловом вызове '$ scope. $ Digest()' это должен быть вызов вручную при использовании $ httpBackend модуля. Я предлагаю вам использовать $ httpBackend для издевательства над вызовом ajax, а затем '$ scope.digest' – Raulucco
Вышеупомянутый комментарий неверен, я смутил цикл дайджеста с помощью метода flush $ httpBackend. В любом случае при тестировании директивы ort контроллер может быть полезен для использования метода дайджеста объекта $ scope – Raulucco