2017-05-06 56 views
0

我想运行一个摩卡单元测试,但是我正在测试的模块使用的模块之一需要使用通过dotenv的process.env.CLIENT_ID等环境变量。当我运行我的Mocha测试时,找不到这些环境变量。我如何在我的摩卡单元测试中包含来自.env文件的环境变量?在摩卡单元测试期间找不到环境变量Node.js

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); 

回答

0

我找到了解决办法。我必须通过添加.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);