Actualmente estoy trabajando en una aplicación de nodo js donde escribí una de las API usando una solicitud POST para obtener los datos de la base de datos. Utilicé POST req porque no quería exponer los parámetros en la URL y enviar la cláusula where en el cuerpo de la solicitud de una solicitud de publicación.
Actualmente estoy escribiendo los casos de prueba usando broma para la API de publicación, pero obtengo un error de solicitud incorrecto. Aquí está mi código -
'use strict' jest.mock('../../utils/db2.js') const request = require('supertest') const app = require('../../app') describe('service read API test', () => { beforeEach(() => { jest.resetModules() }) it('service read API good', async () => { const res = await request(app) .post('/api/v1/abc/xyz/') .send({ id: '090703' }) console.log('Response Body :', JSON.stringify(res.body, null, 2)) expect(res.status).toBe(200) expect(res.body).toEqual({ dnum: '090703', num: 1, startdate: '2021-06-01', enddate: '2022-05-31', rolecode: 5, fnum: 1.049, lastmodifieddate: '2021-06-02 05:34:04.382279', createtime: '2021-06-01 10:53:24.269686', }) })Básicamente, en la API, en el cuerpo de la solicitud, estoy enviando una identificación y en el cuerpo de la respuesta, obtengo el conjunto de resultados según la identificación proporcionada. Pero sigo recibiendo el siguiente error:
● Console console.log Response Body : { "message": "No Records found for the given attributes" } service read API test › service read API good expect(received).toBe(expected) // Object.is equality Expected: 200 Received: 400 46 | }) 47 | console.log('Response Body :', JSON.stringify(res.body, null, 2)) > 48 | expect(res.status).toBe(200) | ^ 49 | expect(res.body).toEqual({ 50 | dnum: '090703', 51 | num: 1,He intentado varias cosas pero no estoy seguro de qué estoy haciendo mal aquí. ¿Cualquier sugerencia?
Código del controlador a continuación:
'use strict' const express = require('express') const router = express.Router() const { getDBDetails } = require('../utils/constants') const executeDb2Query = require('../utils/db2') const { validate } = require('express-validation') router.post('/', async (req, res, next) => { try { if (req.body.constructor === Object && Object.keys(req.body).length === 0) { return res.status(400).send('Request Body is empty. Please check!!') } const request= req.body const getDetails = await executeDb2Query({ sql: getDBDetails(disNum), log: req.log, name: 'Get Details', errorMsg: 'Get error while getting the Details ' }) return res.status(200).json(getDetails) } else { return res .status(400) .json({ message: 'No Records found for the given attributes' }) } } catch (error) { return next(error) } })