0

我用 Hapi 开发了一个 API 服务器。我使用@hapi/lab进行测试。对于不同的 API 模块/路由,我有不同的测试文件。

每个测试文件中都有一个服务器初始化。初始化服务器时会创建一个数据库连接,因此,当我尝试测试服务器时,会同时创建多个数据库连接。我收到了这样的警告:

WARNING: Creating a duplicate database object for the same connection.
at Object.register (/home/.../node_modules/hapi-pg-promise/index.js:19:20)
at internals.Server.register (/home/.../node_modules/@hapi/hapi/lib/server.js:453:35)
at async Object.exports.compose (/home/.../node_modules/@hapi/glue/lib/index.js:46:9)
at async createServer (/home/.../server.js:10:115)
at async Immediate.<anonymous> (/home/.../node_modules/@hapi/lab/lib/runner.js:662:17)

那么,有没有一种方法,如何在没有多个服务器连接的情况下在多个文件中测试 Hapi 服务器?

4

1 回答 1

0

您将不得不延迟加载服务器。假设您有一个返回服务器的函数 serverFactory。你可以这样做

let serverFactoryObj;

function getServerFactory() {
  if (!serverFactoryObj) {
    serverFactoryObj = serverFactory();
  }

  return serverFactoryObj;
}

这样,无论您测试端点多少次,您将始终拥有一个服务器实例。理想情况下,您应该始终使用单个实例进行测试,而不是为每个测试创建/停止服务器。

于 2019-12-20T09:22:09.327 回答