如何使用sinon.js正确测试Angular的$http
success
和error
承诺?这是我到目前为止(所有在coffeescript中):
drive: (vehicle) ->
$http.post '/user/signin', vehicle
.success ((data) ->
# do stuff
return data
).error
throw Error (error)
$scope.drive = (vehicle) ->
$scope.data = Autobahn.drive(vehicle)
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的回调链的详细信息。
答案 0 :(得分:0)
请勿使用$http
的{{1}}和success
承诺。 error
本身就是一种承诺。使用$http
。
请参阅:Undefinied is not a function when using .success on a function that returns a promise