【问题标题】:Environment variables not found during Mocha unit test Node.jsMocha 单元测试 Node.js 期间未找到环境变量
【发布时间】:2017-10-04 13:15:02
【问题描述】:

我正在尝试运行 mocha 单元测试,但我正在测试的模块使用的模块之一需要环境变量,例如通过 dotenv 的 process.env.CLIENT_ID。当我运行 Mocha 测试时,找不到这些环境变量。如何在我的 mocha 单元测试中包含 .env 文件中的环境变量?

test.js:

    var messenger = require(__dirname + "/../routes/messenger.js");
var assert = require("assert") 


describe("Return Hello", function(){
    it('Should return hello',function(done){
        messenger.testFunction(function(value){
            assert(value === "Hello", 'Should return Hello')
            done()
        })
    })
})

包含通过单元测试的问题的文件部分:

    var express = require("express")
var router = express.Router();

require('dotenv').config()

var plaid = require('plaid');
var mysql = require('mysql');

var fs = require("fs");


const plaidClient = new plaid.Client(
    process.env.PLAID_CLIENT_ID, // these are all not found
    process.env.PLAID_SECRET,
    process.env.PLAID_PUBLIC_KEY,
    plaid.environments.sandbox);

【问题讨论】:

    标签: javascript node.js unit-testing mocha.js


    【解决方案1】:

    对我来说,在测试之前设置环境的最优雅方式是在 package.json 中

    这里是一个适应你自己的 npm test 命令的例子:

    "scripts": {
      "test": "mocha -r dotenv/config"
    }
    

    主要思路是添加-r dotenv/config

    该方法同样适用于 dotenv-flow,不要忘记在命令开头添加 NODE_ENV=test

    它也适用于 nodemon

    【讨论】:

    • 如果您需要为您的 .env 文件传递​​自定义路径,您可以使用 DOTENV_CONFIG_PATH env 变量
    【解决方案2】:

    我找到了解决方案。我必须通过添加.config() 方法的path: 选项,将dotenv 配置显式链接到.env 文件的位置。

    例子:

            var envPath = __dirname + "/../.env"
        require('dotenv').config({path:envPath})
    
    // ^ this was incorrect
    
        var express = require("express")
        var router = express.Router();
    
        var plaid = require('plaid');
        var mysql = require('mysql');
    
        var fs = require("fs");
    
    
        const plaidClient = new plaid.Client(
            process.env.PLAID_CLIENT_ID,
            process.env.PLAID_SECRET,
            process.env.PLAID_PUBLIC_KEY,
            plaid.environments.sandbox);
    

    【讨论】:

      【解决方案3】:

      下面的东西对我有用;)

      "scripts": {
              "test": "DOTENV_CONFIG_PATH=test.env mocha -r dotenv/config ",
            }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-28
        • 2018-08-19
        • 2021-10-30
        • 1970-01-01
        • 2018-11-05
        • 1970-01-01
        相关资源
        最近更新 更多