在AngularJS / karma / jasmine测试中通过$http测试后端API?
发布时间:2020-12-17 07:31:17 所属栏目:安全 来源:网络整理
导读:如何使用AngularJS / karma / jasmine测试测试我的API后端? 我试图创建显示我的错误的最小测试用例: echo_server.py from bottle import response,route,run@route('/echo/echo')def echo_echo(echo): response.headers['Access-Control-Allow-Origin'] =
如何使用AngularJS / karma / jasmine测试测试我的API后端?
我试图创建显示我的错误的最小测试用例: echo_server.py from bottle import response,route,run @route('/echo/<echo>') def echo_echo(echo): response.headers['Access-Control-Allow-Origin'] = '*' return {'echo': echo} # Served as JSON if __name__ == '__main__': run() 测试/单元/ apiSpec.js // Should this be in `test/e2e/apiSpec.js`? describe('echo',function () { var scope,http; beforeEach(inject(function ($rootScope,$http) { $http.defaults.useXDomain = true; // CORS scope = $rootScope.$new(); http = $http; })); it("should echo from server",function () { scope.$apply(function () { var ret; http.get("http://localhost:8080/echo/foo") .success(function (data,status,headers,config) { ret = data; }) .error(function (data,config) { ret = data; }); console.log('ret = ' + ret); expect(ret.echo).toBe("foo"); }); }); }); 业力的输出开始配置/ karma.conf.js INFO [karma]: Karma v0.10.8 server started at http://localhost:9876/ INFO [launcher]: Starting browser PhantomJS INFO [PhantomJS 1.9.2 (Linux)]: Connected on socket m7imfgmhXdOY9JVKJh8r LOG: 'ret = undefined' PhantomJS 1.9.2 (Linux) echo should echo from server FAILED Error: Unexpected request: GET http://localhost:8080/echo/foo No more request expected at $httpBackend (~Projects/~karma-tests/test/lib/angular/angular-mocks.js:1178) ...
提到的测试堆栈不打算以这种方式使用.由于$httpMockBackend已在原始$httpBackend顶部装饰,因此永远不会调度该请求.
要允许请求通过,您需要排除angular-mocks.js,或者指定一些URL应该像这样通过: angular.module('yourModule').run(function ($httpBackend) { $httpBackend.whenGET(/.*/).passThrough(); } 阅读$httpMockBackend here的文档 此外,您的测试是同步的,并且服务器响应是异步的,因此它将无法按预期工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |