You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS+Express路由环境变量不可用,Jest+Supertest测试异常

解决Jest测试时dotenv环境变量未加载的问题

问题原因

Jest的运行环境独立于应用启动流程,你之前通过app.js里的require("dotenv").config()或启动脚本的node -r dotenv/config加载环境变量的方式,不会自动作用于Jest测试流程。这就导致测试时路由中间件里的process.env.API_TOKEN为undefined,无法完成Token验证逻辑。

解决方案

方法1:在测试文件中直接加载dotenv

在你的测试文件最顶部添加dotenv加载代码,确保环境变量在测试执行前被注入:

require('dotenv').config();
// 如果.env文件不在测试文件同级目录,需手动指定路径,比如:
// require('dotenv').config({ path: '../.env' });

test("POST /cpf/* should fail when authorization token is wrong", async() => {
    // 原测试代码...
});

方法2:通过Jest配置全局加载dotenv

在项目根目录创建或修改jest.config.js,添加setupFiles配置项,让所有测试文件执行前自动加载dotenv:

module.exports = {
  setupFiles: ['dotenv/config']
};

方法3:修改测试启动脚本

在package.json的scripts字段中修改测试命令,用-r参数预先加载dotenv:

{
  "scripts": {
    "test": "node -r dotenv/config node_modules/jest/bin/jest.js"
  }
}

额外注意点

你的测试用例中期望的错误信息是"Request not authorized => invalid token.",但中间件实际返回的是葡萄牙语"Requisição não autorizada => token de autorização inválido.",两者文本不匹配会导致测试断言失败,需要统一两者的内容。

内容的提问来源于stack exchange,提问作者Edvaldo Silva de Almeida Jr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:05:29