我有一个 .env
文件,里面有 MYVAR=1
变量。
服务器.js
//...
var app = express();
//...
if(app.get("env")==="development"){
require('dotenv').config();
}
console.log("server------",process.env. MYVAR) //outputs 1
if(process.env.MYVAR==1){
//do this
}
if(process.env.MYVAR==2){
//do this
}
module.exports = app;
测试服务器.js
app = require('../server'),
supertest = require('supertest');
require('dotenv').config();
describe('Server TESTS', function () {
let request = null
let server = null
before(function (done) {
process.env.MYVAR = 2;
server = app.listen()
request = supertest.agent(server)
done()
});
after(function (done) {
console.log("client------",process.env. MYVAR) //outputs 2
server.close(done)
});
})
问题:
在我运行 mocha 测试
之后,我的 MYVAR
没有反射(reflect) server.js
文件,它仍然是 1
。即使我在 server.js
require('dotenv').config();
我该如何克服这个问题,也许我的 super 测试代理结构不正确。请指教。
更新:
代替 server = app.listen()
,server = require('../server').listen()
按预期工作。
最佳答案
只需尝试在 app = require('../server')
之前调用 process.env.MYVAR = 2;
:
require('dotenv').config();
process.env.MYVAR = 2;
var app = require('../server');
var supertest = require('supertest');
有一个更好的方法来处理测试环境变量,你可以创建一个 test/mocha.env.js
文件,然后添加 --require test/mocha.env.js
到 mocha.opts
,但这仍然取决于您的需要。
关于node.js - 在单元测试期间更改 dotenv 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270289/