在模拟表单的节点中用玩笑发送参数时出错

Error sending params with jest in node simulating a form

我正在使用 jest 来进行我的 CI 测试,我尝试像使用 jest 的表单一样发送参数,但我总是收到错误 500,这是我的 login.test.js

const request = require('supertest');
const app = require('../routes/login');

describe('Login', () => {
    test('Login correcto', async () => {
        const response = await request(app)
            .post('/login')
            .send({ user: 'hector' })
            .set('user', 'hector')
            .set('Content-Type', 'application/json')
        expect(response.statusCode).toEqual(200)
    });
});

这是我的login.js路线

 app.post('/login', (req, res) => {
    let body = req.body;
    let user = body.user;
    console.log(user);
    
    return res.status(200).send('okey');
});

我向用户发送了一个表单,但它不起作用,我收到错误 500,那我该怎么办?

问题是您的 Express 应用无法解析发送给它的 JSON。使用 app.use(express.json()); 添加 express.json 中间件可解决您的问题:

const express = require('express');

const app = express();

app.use(express.json());

app.post('/login', (req, res) => {
    let body = req.body;
    let user = body.user;
    console.log(user);
    
    return res.status(200).send('okey');
});