如何使用sinon.js正确测试Angular的$ http成功和错误承诺?

时间:2015-05-28 14:28:00

标签: angularjs unit-testing sinon

如何使用sinon.js正确测试Angular的$http successerror承诺?这是我到目前为止(所有在coffeescript中):

服务高速公路

drive: (vehicle) ->
  $http.post '/user/signin', vehicle
  .success ((data) ->
    # do stuff
    return data
  ).error
    throw Error (error)

Controller Streets

$scope.drive = (vehicle) ->
    $scope.data = Autobahn.drive(vehicle)

单元测试w。兴农

it 'should test $http callbacks', ->
  sinon.stub($scope, 'drive').yieldsTo 'success', callBackMockData
  $scope.drive vehicle, (data) ->
    expect($scope.data).to.be(callBackMockData)
    return
  return

结果

TypeError: 'undefined' is not a function (evaluating '(function(data) {
          return data;
        }).error(function(data) {
          throw Error(error);
        })')

也许stub不是正确的方法,因为我想一次性真正测试控制器和服务。我们如何测试Angular的$ http承诺?官方文档使用httpBackEnd无法提供有关如何测试$ http的回调链的详细信息。

1 个答案:

答案 0 :(得分:0)

请勿使用$http的{​​{1}}和success承诺。 error本身就是一种承诺。使用$http

请参阅:Undefinied is not a function when using .success on a function that returns a promise