如何使用$ httpBackend.passThrough()与Karma单元测试

时间:2013-11-14 00:47:47

标签: javascript angularjs karma-runner

我上下打量并尝试了各种各样的东西,以使E2E passThrough()实际工作。只有示例适用于模板。我不认为它实际上可以工作,但如果有人见过一个工作的例子,我很乐意看到它。基本上我想在我的Karma测试中使用真正的XHR调用而不是模拟。

这就是我所处的位置 - 我尝试了很多变化 - 现在我得到一个未知的提供者:cartServiceProvider错误 - 有时我会注入但是接下来是其他的。

myAppDev = angular.module('myApp', ['ngMockE2E']);
myAppDev.run(function($httpBackend) {
  $httpBackend.whenPOST(/^api\/cart\/save/).passThrough();
});
beforeEach(angular.module('myApp'));
beforeEach(inject(function(_$httpBackend_, _$rootScope_, _$http_e) {
  $scope = _$rootScope_;
  $http = _$http_;
  $httpBackend = _$httpBackend_;

}));

describe('#createOrder()', function() {
  it('should return an order ID', function(done) {
    inject(function(cartService) {
      $scope.$apply(function() {
        cartService.createOrder(function(res) {
          done();
        });
      });
    })
  });
});

样品服务:

angular.module('myApp').factory('cartService', function($http) {

  Cart.prototype.createOrder = function(callback) {
    var self = this;
    var data = {}

    $http.post('/api/cart/save', data ).success(function(res) {
      self.order = res.id;
      callback(res);
    });
  };

0 个答案:

没有答案