2014-09-22 3 views
1

Как я могу проверить ценность обещания, возвращенного службой? В $q documentation значение обещания задано в тесте с помощью разрешения (значения). Другие подходы проверяют логику обслуживания в контроллере, используя тот факт, что AngularJS оценивает обещания и связывает значения $ scope.Тестирование значения обещания, возвращаемого службой

На мой взгляд, ни один из этих подходов фактически не проверяет логику службы в том месте, где она должна быть проверена. Как я могу проверить, что разрешенное обещание (которое возвращается службой) содержит правильное значение?

Вот пример:

myApp.service('service', function($q){ 
    var obj = {}; 
    obj.test = function() { 
     var deferred = $q.defer(); 
     deferred.resolve(false); 
     return deferred.promise; 
    } 
    return obj; 
}); 

Для того, чтобы протестировать услугу, я хочу сделать следующее в теории (которая не работает на практике): вар $ д, обслуживание;

beforeEach(function() { 
    module('myModule'); 
    service = $injector.get('service'); 
}); 

describe('...', function() { 
    it('Testing whether promise contains correct value', function() { 
     var myPromise = service.test(); 
     myPromise.then(function(value) { 
      expect(value).toBeFalsy(); 
     }); 
    }); 
}); 

ответ

0

Я считаю, что вы неправильно вводите услугу. Вы должны использовать обозначение подчеркивания. См. Эту ссылку. http://nathanleclaire.com/blog/2014/04/12/unit-testing-services-in-angularjs-for-fun-and-for-profit/

Итак, ваш тест должен выглядеть примерно так.

var service;  
beforeEach(function() { 
    module('myModule'); 
    inject(function(_service_) { 
     service = _service_; 
    }); 
}); 


describe('...', function() { 
    it('Testing whether promise contains correct value', function() { 
     var myPromise = service.test(); 
     myPromise.then(function(value) { 
      expect(value).toBeFalsy(); 
     }); 
    }); 
}); 
+0

Я согласен с тем, что я должен вернуть обещание (изменил его в исходном вопросе), но это все еще не заставляет его работать. – bengro

+0

можете ли вы разместить другие части вашего теста, в частности, в той части, где вы настраиваете тесты? –

+0

Я обновил тест в исходном вопросе. – bengro

Смежные вопросы