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



如何用sinon.js正确测试Angular的$httpsuccesserror承诺?这是我到目前为止所做的(全部用coffeescript):

服务高速公路

drive: (vehicle) ->
  $http.post '/user/signin', vehicle
  .success ((data) ->
    # do stuff
    return data
  ).error
    throw Error (error)
<<h3>控制器街道/h3>
$scope.drive = (vehicle) ->
    $scope.data = Autobahn.drive(vehicle)

单元测试w. Sinon

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);
        })')

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

不要使用$httpsuccesserror承诺。$http本身就是一个承诺。使用.then() .

参见:当对返回promise的函数使用.success时,undefined不是函数

最新更新