使用其他环境运行测试。取决于package.json中的命令的变量

时间:2019-04-18 06:42:43

标签: node.js mocha

试图找到一种常见的解决方案,该方法如何根据package.json中的测试命令以及.env文件中的相应环境变量来运行测试。

.env。 //文件

BASE_URL=dev
BASE_URL=stage
API_DEV=api-dev
API_STG=api-stage

package.json //文件

"test:dev": "mocha ...",
"test:stage": "mocha ...",

启动 test:dev 我想为我的测试获取DEV环境的所有变量。

我可以这样配置吗?

2 个答案:

答案 0 :(得分:1)

假设您的package.json包含以下脚本属性-

"test:local": "APP_ENV=local mocha ...",
"test:dev": "APP_ENV=dev mocha ...",
"test:stage": "APP_ENV=stage mocha ...",
"test:prod": "APP_ENV=prod mocha ..."

并假设您具有以下文件:.env的{​​{1}},prod的{​​{1}}和.env.stage环境的stage

现在,您可以在脚本中使用.env.dev软件包动态加载dev文件。

env

通过这种方式,您可以在dotenv对象中使用环境变量

答案 1 :(得分:0)

好,我是这样解决的:

config文件夹中, .env stage.env prod.env

并拥有index.js文件,其中:

const {NODE_ENV = 'dev'} = process.env;
const dotenv = require('dotenv').config({path: `${__dirname}/${NODE_ENV}.env`});

module.exports = {

    api: {
        url: dotenv.parsed.API_BASE || ''
    },

    elastic: {
        host: dotenv.parsed.ELASTIC_HOST || ''
    }
};

在json包中,我有:

"elastic:dev": "mocha ./test/elasticsearch/*.js",
"elastic:stage": "NODE_ENV=stage mocha ./test/elasticsearch/*.js",
"elastic:prod": "NODE_ENV=prod mocha ./test/elasticsearch/*.js"

根据环境,又可以像老板一样轻松便捷地开始测试。