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();
  });
});
  1. 我正在测试的端点在启动服务器并使用 curl 或浏览器手动访问它时工作正常。
  2. 测试 运行 很好并通过了,但它们只是挂在最后而不是完成。
  3. 实际端点代码只是访问数据库,returns 一些记录为 json。

什么可能导致测试挂起,我该如何解决?

原来与这个问题有关:https://github.com/substack/tape/issues/216

在我的例子中,通过 knex 的数据库连接仍然打开,这导致节点进程完成。解决方案是在拆解测试中显式调用 knex.destroy()