Я работаю с browserify
, чтобы рассказать об угловом сервисе. Я использую jasmine
писать тесты для этой службы, которая определяется как:Тестирование углового обслуживания, которое также является обещанием
angular
.module('Client', [])
.factory('client', ['url', 'otherService', '$http', '$log', client])
function client (url, otherService, $http, $log) {
$log.debug('Creating for url %s', url)
var apiRootPromise = $http.get(url).then(function (apiRoot) {
$log.debug('Got api root %j', apiRoot)
return otherService.stuff(apiRoot.data)
})
return Object.assign(apiRootPromise, otherService)
}
В следующий набор тестов:
describe('test client', function() {
beforeEach(function() {
angular.mock.module('Client')
angular.mock.module(function ($provide) {
$provide.value('url', 'http://localhost:8080/')
})
})
it('should connect at startup', angular.mock.inject(function (client, $rootScope, $httpBackend) {
$rootScope.$apply()
$httpBackend.flush()
expect(client).toBeDefined()
}))
})
кидает TypeError: undefined is not a constructor
на (evaluating Object.assign(apiRootPromise, otherService)')
. Я не уверен, что здесь происходит, но мое лучшее предположение - Угловое, не впрыскивает должным образом зависимую услугу или не возвращает обещание $http
.