Koa 应用程序在使用 supertest 进行测试时挂起
Koa app hangs when tested with supertest
我的超级测试/磁带测试文件如下所示:
var test = require('tape');
var app = require('../../api');
var agent = require('supertest').agent
var supertestCompatibleServer = agent(app.callback());
test('GET /Campus.svc', function (t) {
supertestCompatibleServer
.get('/Campus.svc')
.expect(200)
.expect('Content-Type', /json/)
.end(function (err, res) {
t.ifError(err, 'No error');
t.end();
});
});
- 我正在测试的端点在启动服务器并使用 curl 或浏览器手动访问它时工作正常。
- 测试 运行 很好并通过了,但它们只是挂在最后而不是完成。
- 实际端点代码只是访问数据库,returns 一些记录为 json。
什么可能导致测试挂起,我该如何解决?
原来与这个问题有关:https://github.com/substack/tape/issues/216
在我的例子中,通过 knex 的数据库连接仍然打开,这导致节点进程完成。解决方案是在拆解测试中显式调用 knex.destroy()
。
我的超级测试/磁带测试文件如下所示:
var test = require('tape');
var app = require('../../api');
var agent = require('supertest').agent
var supertestCompatibleServer = agent(app.callback());
test('GET /Campus.svc', function (t) {
supertestCompatibleServer
.get('/Campus.svc')
.expect(200)
.expect('Content-Type', /json/)
.end(function (err, res) {
t.ifError(err, 'No error');
t.end();
});
});
- 我正在测试的端点在启动服务器并使用 curl 或浏览器手动访问它时工作正常。
- 测试 运行 很好并通过了,但它们只是挂在最后而不是完成。
- 实际端点代码只是访问数据库,returns 一些记录为 json。
什么可能导致测试挂起,我该如何解决?
原来与这个问题有关:https://github.com/substack/tape/issues/216
在我的例子中,通过 knex 的数据库连接仍然打开,这导致节点进程完成。解决方案是在拆解测试中显式调用 knex.destroy()
。