Tom*_*Tom 8 node.js express supertest econnrefused jestjs
我正在努力使用超级测试解决我的笑话测试中的错误,我认为这是我的测试而不是我的代码的问题。
我的问题
我正在尝试使用 Node.js 和 Express、TDD 创建后端 API。我有以下文件来设置服务器:
//in app.js
const express = require('express');
const app = express();
app.post('api/1.0/users', (req, res) => {
return res.send();
});
module.exports = app;
//in index.js
const app = require('./app');
const port = 3000;
app.listen(port, () => console.log(`listening on port: ${port}`));
Run Code Online (Sandbox Code Playgroud)
当我运行服务器时,它在端口 3000 上成功运行。但是,当我运行以下测试时:
//in UserRegister.test.js
const request = require('supertest');
const app = require('../app'); //this is in a __tests__ subdir hence '..'
it('returns 200 OK when sign-up request is valid', (done) => {
request(app)
.post('api/1.0/users')
.send({
first_name: 'person',
last_name: 'one',
password: '123',
})
.expect(200, done);
});
Run Code Online (Sandbox Code Playgroud)
问题
我得到了错误connect ECONNREFUSED 127.0.0.1:80。
我认为这告诉我测试正在寻找连接到端口 80,但是端口 80 上没有设置服务器,因此连接被拒绝,但它应该尝试连接到端口 3000。
我尝试过的
it('returns 200 OK when sign-up request is valid', async () => {
const response = await request(app).post('api/1.0/users')
.send({
first_name: 'person',
last_name: 'one',
password: '123',
})
expect(response.statusCode).toEqual(200);
});
Run Code Online (Sandbox Code Playgroud)
我缺少什么?我越来越相信这是我对超级测试的工作原理缺乏了解,但我似乎无法理解问题是什么。
我只是在寻找测试通过或失败(通过获得 200 或 404 响应),但只有当它连接到正确的端口时(即我陷入了第一个障碍)。
小智 21
问题在于 URI。我刚刚尝试了一个 url 未开始使用的测试,/并得到了相同的错误。所以与其
.post('api/1.0/users')
Run Code Online (Sandbox Code Playgroud)
使用
.post('/api/1.0/users')
Run Code Online (Sandbox Code Playgroud)
可能会解决问题。
| 归档时间: |
|
| 查看次数: |
12584 次 |
| 最近记录: |