cyb*_*bat 5 javascript unit-testing angularjs karma-runner
我想使用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();
});
Run Code Online (Sandbox Code Playgroud)
但是这给出了一个错误:
Unexpected request: GET /api/data
No more request expected
Error: Unexpected request: GET /api/data
No more request expected
Run Code Online (Sandbox Code Playgroud)
如果我删除了应用调用,它会超时.
您很可能会在与提供真实数据的服务不同的端口上运行 karma。如果您可以将请求重新路由到运行真实数据的服务的服务器/端口,这样它就不会遇到CORS,您将能够使其工作。在我的项目中,我使用Charles 代理来映射 url,以在使用passThrough(). 您还可以使您的真实数据服务 CORS 兼容,以简化工作。
| 归档时间: |
|
| 查看次数: |
1395 次 |
| 最近记录: |