1

我正在尝试通过验证配置文件来测试我的配置文件,没什么花哨的,架构,环境列表,迭代它,加载配置并根据架构验证变量。

问题是,要做到这一点,我目前必须设置process.env.NODE_ENV. 由于测试有自己的保留配置文件,这意味着如果测试并行运行,当其他测试加载配置时,测试可能会更改 NODE_ENV 变量,虽然这似乎不太可能发生,仍然打扰我。

一个简单的解决方案是能够告诉node-config忽略环境变量,并使用给定的值,就像它一样require('config')('myNodeEnv'),但我在 wiki 或文档中找不到类似的东西。最接近的是自定义环境变量,但这只会将问题转移到另一个变量。

4

1 回答 1

0

测试应该加载相同的“基础”测试配置,而不是拥有自己的配置文件的测试。

当特定测试需要覆盖特定值时,它应该覆盖该特定值而不是整个配置(不用说,我们需要确保在测试完成时修复覆盖的值)。

当我们如上所述工作时,它减少了任何碰撞的机会,因为不同测试在完全相同的时刻覆盖完全相同的值的机会非常低。

另一种选择是单独运行测试,例如:

npm run test:suite1
npm run test:suite2

wheretest:suite1可以在 package.json 的scriptssection 下声明,例如:

"test:suite1": "NODE_ENV=test-conf-1 tests/suite1.js",
...
于 2021-07-01T03:51:21.577 回答