AngularJS / Karma 单元测试与真实的 XHR 数据 / passThrough()

AngularJS / Karma unit testing with real XHR data / passThrough()

本文关键字:数据 passThrough XHR 真实 Karma 单元测试 AngularJS      更新时间:2023-09-26

我想使用passThrough()使用真实的$http数据进行单元测试。

这是我到目前为止所拥有的:

var should = chai.should();
beforeEach(module('myApp', 'ngMockE2E'));
beforeEach(inject(function(_$httpBackend_, _$rootScope_, _$http_) {
  $scope = _$rootScope_;
  $http = _$http_;
  $httpBackend = _$httpBackend_;
}));
it.only('blah', function(done) {
 $httpBackend.whenGET('/api/data').passThrough();
  $scope.$apply(function() {
  $http.get('/api/data').success(function(data) {
   data.should.eql({"foo": "bar"});
    done();
  });
});
// Evidently not required with E2E
//$httpBackend.flush();
});

但这给出了一个错误:

Unexpected request: GET /api/data
No more request expected
Error: Unexpected request: GET /api/data
No more request expected

如果我删除应用调用,它会超时。

最有可能的是

,您将在与提供具有真实数据的服务的端口不同的端口上运行 karma。如果可以将请求重新路由到运行具有真实数据的服务的服务器/端口,使其不会遇到 CORS,您将能够使其工作。在我的项目中,我使用 Charles 代理来映射 url,以便在使用 CORS 时绕过 CORS,passThrough() .您还可以使实际数据服务 CORS 兼容以简化操作。