[英]Angular unit testing of then() in service
我的服務如下:
'use strict'
angular.module('mymodule')
.factory('myservice', ['$http', ($http) ->
return {
get: ->
return $http.get('/abc/details')
.then (response) ->
return response.data
}
])
我的單元測試如下:
describe 'Testing myservice', ->
_myservice_ = null
httpBackend = null
beforeEach module 'mymodule'
beforeEach inject (myservice, $httpBackend) ->
_myservice_ = myservice
httpBackend = $httpBackend
describe 'When get()', ->
it "GET request is sent to /abc/details", ->
httpBackend.whenGET("/abc/details").respond
data:
name: 'company name',
addressee: 'Mary Jane'
returnedPromise =_myservice_.get()
result = returnedPromise.then (response) ->
result = response.data
httpBackend.flush()
expect(result).toEqual({name: 'company name', addressee: 'Mary Jane'})
在我的服務中,響應實際上是在then()
(即僅返回response.data
)。 我的問題是,如何(單元)測試myservice.get()
我返回response.data
而不是response
?
由於您的服務不會返回HTTP響應承諾,而是返回數據承諾,因此測試應為
returnedPromise.then (data) ->
result = data
httpBackend.flush()
expect(result).toEqual({name: 'company name', addressee: 'Mary Jane'})
我還假設真正的REST服務實際上並不返回包含單個數據字段的對象。 所以嘲笑應該像
httpBackend.whenGET("/abc/details").respond
{
name: 'company name',
addressee: 'Mary Jane'
}
(很抱歉,如果它不是有效的coffeescript。我使用JavaScript)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.