A T*_*A T 8 jasmine angularjs karma-runner httpbackend angularjs-http
如何使用AngularJS/karma/jasmine测试测试我的API后端?
我试图创建显示我的错误的最小测试用例:
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()
Run Code Online (Sandbox Code Playgroud)
// 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, status, headers, config) {
ret = data;
});
console.log('ret = ' + ret);
expect(ret.echo).toBe("foo");
});
});
});
Run Code Online (Sandbox Code Playgroud)
karma start configs/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)
...
Run Code Online (Sandbox Code Playgroud)
Ken*_*nne 14
提到的测试堆栈不打算以这种方式使用.该请求永远不会被派遣,因为$httpMockBackend
它已经在您的原件上进行了装饰$httpBackend
.
要允许请求通过,您需要排除angular-mocks.js
,或指定一些网址应该通过这样:
angular.module('yourModule').run(function ($httpBackend) {
$httpBackend.whenGET(/.*/).passThrough();
}
Run Code Online (Sandbox Code Playgroud)
阅读此处的文档$httpMockBackend
此外,您的测试是同步的,并且服务器响应是异步的,因此它将无法按预期工作.
归档时间: |
|
查看次数: |
14137 次 |
最近记录: |