【问题标题】:@hapijs/lab: how to prevent creation multiple DB connections when testing the server?@hapijs/lab:测试服务器时如何防止创建多个数据库连接?
【发布时间】:2023-03-05 21:40:01
【问题描述】:

我用 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 服务器?

【问题讨论】:

标签: hapi lab


【解决方案1】:

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

let serverFactoryObj;

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

  return serverFactoryObj;
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-24
    • 2022-01-26
    • 2018-03-01
    • 2020-07-07
    • 1970-01-01
    • 2019-11-25
    • 2021-08-24
    • 1970-01-01
    相关资源
    最近更新 更多