Node.js设置进程.测试中的环境变量
node.js set process.env variable in test
当我用mocha在node.js中运行测试时,我如何设置时间环境变量?
在模块中,我有一个变量取决于环境变量var myVariable = proccess.env.ENV_VAR;
现在我使用rewire模块,
var rewire = require('rewire');
var myModule = rewire('../myModule');
myModule.__set__('myVariable', 'someValue');
存在更简单的方法吗?没有重接线模块?
在您的myModule.js
文件中,导出一个以变量作为参数的函数,例如:
module.exports = function (var) {
// return what you were exporting before
};
当你需要它的时候,像这样要求:
var myModule = require('../myModule')(process.env.ENV_VAR);
我的第一反应是简单地在test.js的顶部设置env变量,然后再执行任何require语句。但是,如果您有一个依赖于env变量的模块,并且在相同的测试运行中多次需要它,那么这可能不适合您。假设你有一个依赖于env的模块,名为mode.js:
module.exports = {
MODE : process.env.ENV_VAR
};
如果用
添加一个名为bTest.js
的测试文件process.env.ENV_VAR= "UNIT_TEST_MODE"
const mode = require('./mode.js')
// describe some tests scenarios that use mode.MODE
...
你会好的。但是如果您添加第二个测试文件
const mode = require('./mode.js')
// describe some more tests scenarios that use mode.MODE
...
并命名为aTest.js
,新文件将首先在您的套件和模式下运行。对于所有后续的测试js文件,MODE都是未定义的。require
命令实际上不会多次重新加载相同的模块。
让我们假设您不能在测试中使用dotenv包。如果是,您可以在进程上设置值。在mocha配置文件中以编程方式Env。默认情况下,它在.mocharc中找到。Json或.mocha。但这可以很容易地转换为.mocharc.js。参考这里的示例js文件:https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
所以你的。mocharc。js可以是"use strict";
process.env.ENV_VAR = "UNIT_TEST_MODE";
// end of .mocharc.js
和ENV_VAR将在mocha需要或运行任何模块之前设置。即使你正在使用dotenv,你也可以选择从mochajs配置中翻转设置其他dotenv选项,你可能不想在本地开发服务器的。env文件中设置。那样的话,你的。嫉妒。Mocha变量将可用于不需要dotenv的单个模块。
"use strict";
require('dotenv').config({ debug: process.env.DEBUG, { path: '/full/custom/path/to/.env.mocha' } })`.
// end of .mocharc.js
虽然在第二种情况下,你可能会更好地设置dotenv env路径作为你的package.json中的测试命令的一部分:node -r dotenv/config /node_modules/mocha/bin/_mocha dotenv_config_path=/full/custom/path/to/.env.mocha
- 在node.js中设置Apache环境变量
- 可以'无法正确访问NODE_ENV环境变量,这是NODE.js的错误吗
- 如何将 Node.js 环境变量注入客户端 JavaScript
- Strapi-使用环境变量进行配置
- 执行批处理文件的Javascript,该文件包含基于每个会话的环境变量设置
- 如何将环境变量从.bash_profile引入javascript
- 同构JS应用程序中的环境变量:Webpackfind&代替
- Rails从本地环境变量中删除端口
- Node.js Node_PATH环境变量
- 如何从批处理文件调用一个带有2个参数的java脚本函数,并将结果返回到环境变量
- 如何设置离线环境来测试我的 Google App Engine 聊天室
- 在 html 文件中使用环境变量
- WebPack:访问客户端代码中的节点环境变量
- 吞噬基于环境变量的ReactJS
- 如何根据 Docker 环境变量选择要复制的文件
- 如何在 Travis CI 中访问环境变量
- sails.js中app.js文件中的环境变量
- 如何在javascript上从rails访问环境变量
- 用mocha测试依赖于环境变量process.env.APP_ENV的配置模块
- Node.js设置进程.测试中的环境变量