我尝试使用不同的.env文件进行Jest测试,但到目前为止我无法使其工作。
package.json:
{
"name": "task-manager",
"version": "1.0.0",
"description": "",
"main": "index.js",
"module": "main.js",
"scripts": {
"start": "node -r esm src/index.js",
"dev": "nodemon -r esm -r dotenv/config src/index.js dotenv_config_path=./config/.env",
"test": "jest --setupFiles dotenv/config --watch"
},
"jest": {
"testEnvironment": "node"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@sendgrid/mail": "^6.3.1",
"bcryptjs": "^2.4.3",
"dotenv": "^6.2.0",
"esm": "^3.2.10",
"express": "^4.16.4",
"jest": "^24.3.1",
"jsonwebtoken": "^8.5.0",
"mongodb": "^3.1.13",
"mongoose": "^5.4.17",
"multer": "^1.4.1",
"sharp": "^0.21.3",
"supertest": "^4.0.0",
"validator": "^10.11.0"
},
"devDependencies": {
"@babel/core": "^7.3.4",
"@babel/preset-env": "^7.3.4",
"babel-jest": "^24.3.1"
}
}
每次运行npm测试时,使用的MONGODB_URL都存储在我的.env文件中,而不是我的test.env文件中
我创建了一个config文件夹来存储我的.env dev文件,以避免这种情况,但现在我的应用程序在运行Jest时不使用env变量。
我在我的开发脚本中设置了一个配置路径,但我不能用Jest做同样的事情。
**预期行为:**我只是想使用不同的MONGODB_URL进行Jest测试。
3条答案
按热度按时间13z8s7eq1#
接受的答案是相当混乱的我,我不能让它工作,必须参考这个问题:Using .env files for unit testing with jest
以下是我如何使它工作:
我的文件结构
jest.config.js
dotenv-config.js
使用https://www.npmjs.com/package/dotenv中的
debug
选项查看.test.env
是否正确加载。vdgimpew2#
您必须显式指定
dotenv
包应该使用哪个.env
。在你的
dotenv/config.js
文件中,它被用作jest的设置文件,在第一行添加以下内容:require('dotenv').config({ path: './test.env' })
rsaldnfx3#
将envFile与jest一起使用的最简单方法是:
关于package.json
on/jest.config.js
在本例中,
test/.env
有我的环境变量用于测试。