Ошибка отправки параметров с помощью jest в узле, имитирующем форму

#javascript #node.js #jestjs #continuous-integration #tdd

#javascript #node.js #jestjs #непрерывная интеграция #tdd

Вопрос:

Я использую 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, так что я могу сделать?

Ответ №1:

Проблема в том, что ваше экспресс-приложение не может проанализировать отправляемый ему JSON. Добавление промежуточного программного обеспечения express.json app.use(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');
});