簡體   English   中英

在服務中的then()的角單元測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM