Estoy tratando de llamar a una función desde mi aplicación usando supertest y enviando una solicitud expresa personalizada, pero recibo un error 422 cuando envío mi solicitud.
Esta es mi solicitud expresa personalizada
export interface CreateGroupRequest extends Request { body: { groupName: string; email: string; country: string; };Esta es mi solicitud simulada
var testCreateGroupRequest: CreateGroupRequest = { body: { groupName: testName, email: email, country: 'US', } } as RequestEsta es mi prueba hasta ahora
await supertest(app) .post("/login") .send(testLoginBody) .expect(200) .then((response) => { sessionToken = response.body.token }).then(() => { supertest(app) .post("/create_group") .set('X-JWT-Token', `${sessionToken}`) .send(testCreateGroupRequest) .then((response) => { console.log({response}) }) })El mensaje que está en la respuesta es "body.groupName\" is required". ¿Cómo debo crear la solicitud personalizada?
Este es uno de los ejemplos de supertest :
describe('POST /users', function() { it('responds with json', function(done) { request(app) .post('/users') .send({name: 'john'}) .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(200) .end(function(err, res) { if (err) return done(err); return done(); }); }); }); Tenga en cuenta que en su método de send , envían directamente el cuerpo . No extienden ni hacen su propia Request .
Entonces, para solucionar su problema, solo necesita enviar el cuerpo y no la solicitud falsa:
supertest(app) .post("/create_group") .set('X-JWT-Token', `${sessionToken}`) .send({ groupName: testName, email: email, country: 'US', }) .set('Accept', 'application/json') // Don't forget the header for JSON! .then(console.log) // Shortened