3

我上下查看并尝试了各种方法以使 E2E passThrough() 真正起作用。仅示例用于模板。我不认为它实际上可以工作,但如果有人看过一个有效的例子,我很乐意看到它。基本上,我希望在我的 Karma 测试中调用真正的 XHR,而不是模拟。

这就是我所在的位置 - 我尝试了很多变体 - 现在我得到一个 Unknown provider: 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);
    });
  };
4

0 回答 0