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

使用supertest运行Jest测试报connect ECONNREFUSED 127.0.0.1:80 应用监听3000端口

问题根因
  • 路由和测试请求的路径缺少开头的/,属于相对路径解析错误
  • 对supertest运行机制理解有误,supertest不需要手动启动端口监听的服务,传入express app实例后会自动启动临时端口完成请求处理,手动启动的3000端口服务和测试逻辑完全无关
报错原因说明

没有前缀/的路径会被识别为相对路径,supertest构造请求时会默认基于http://127.0.0.1拼接路径,默认走80端口,因此会抛出connect ECONNREFUSED 127.0.0.1:80错误,和是否启动3000端口服务没有关联。

解决方案
  1. 修改app.js中的路由定义,添加路径前缀/:
// 原代码
app.post('api/1.0/users', (req, res) => {
// 修改后
app.post('/api/1.0/users', (req, res) => {
  1. 修改测试用例中的请求路径,添加前缀/:
// 原代码
.post('api/1.0/users')
// 修改后
.post('/api/1.0/users')
额外优化提示

如果后续需要在接口中读取req.body的请求参数,需要在app.js中注册express的json解析中间件,否则请求体无法被正常解析:

const express = require('express');
const app = express();
// 新增json解析中间件
app.use(express.json());

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:45:01