gpt4 book ai didi

node.js - 在单元测试期间更改 dotenv 变量

转载 作者:行者123 更新时间:2023-12-05 01:42:41 26 4
gpt4 key购买 nike

我有一个 .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.jsmocha.opts,但这仍然取决于您的需要。

关于node.js - 在单元测试期间更改 dotenv 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com