【问题标题】:set jest to connect to test database设置 jest 连接到测试数据库
【发布时间】:2019-12-03 12:49:25
【问题描述】:

大家好,在一个现有项目上工作,该项目上有 jest 设置,但没有指定在测试数据库中运行,只是运行了测试,它弄乱了我的开发数据库。我需要做什么来指定它应该运行名为“test”的测试数据库?我所拥有的只是 package.json,上面写着:

  "jest": {
    "collectCoverage": false,
    "testEnvironment": "node",
    "verbose": true,
    "bail": true,
    "roots": [
      "./tests"
    ]
  },

不存在测试设置文件,我宁愿使用设置文件而不是 package.json

【问题讨论】:

  • 注意数据库是postgresql db

标签: node.js testing jestjs


【解决方案1】:

针对独立于开发数据库的专用测试数据库运行测试是个好主意。为此,您需要从项目源代码中外部化数据库连接字符串。在运行任何测试之前,您需要设置外部化配置,以便您的应用程序能够连接到正确的数据库。

确切的答案取决于您如何外部化连接字符串。一种选择是使用 12-Factor App 方式使用环境变量来传递配置。还假设您有 dotenv 或类似的库来读取 .env 文件。你会在jest.config.js 的开头读到.env.test。它会设置与您的开发时间.env 文件不同的测试数据库连接。

请记住,.env 文件不应提交给版本控制。

【讨论】:

  • 感谢您的回复。有一个 dotenv 文件设置,但是在运行 npm run test (./node_modules/jest/bin/jest.js --runInBand) 时它似乎没有拾取测试数据库,.env 文件包含 dev 和测试例如DEV_DB_NAME TEST_DB_NAME
  • 在您的测试命令中,您可能需要使用 npmjs.com/package/cross-env 传递 env,就像 cross-env NODE_ENV=test jest 一样
猜你喜欢
  • 2018-10-01
  • 1970-01-01
  • 2013-05-07
  • 2018-12-23
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
相关资源
最近更新 更多