fastify-express icon indicating copy to clipboard operation
fastify-express copied to clipboard

When testing express application with inject, payload is always empty

Open brechtdewinne opened this issue 4 years ago • 4 comments

Prerequisites

  • [X] I have written a descriptive issue title
  • [X] I have searched existing issues to ensure the bug has not already been reported

Fastify version

3.22.1

Plugin version

0.3.3

Node.js version

16.4.0

Operating system

macOS

Operating system version (i.e. 20.04, 11.3, 10)

11.2.1

Description

I'm having an express application which will transition completely to Fastify in the future. We want to write integration tests for this application and leverage fastify.inject but when executing a request, the payload is always empty.

To run our tests we are using Jest (27.2.5).

Steps to Reproduce

// server.ts

const router = express.Router();

const app = fastify();

router.get('/test', (req, res) => {
  res.status(201);
  res.json({ hello: 'world' });
});

await app.register(fastifyExpress).after(async () => {
  app.use(router);
});
// test.ts

test('No query parameters', async () => {
  app.inject().get('/test').end((err, response) => {
    expect(response.statusCode).toEqual(201);
    expect(response.json()).toEqual({ hello: 'world' });
  });
});

Expected Behavior

I would expect a body and not an empty string.

brechtdewinne avatar Oct 20 '21 08:10 brechtdewinne

Unfortunately inject() does not work with Express :/. Express mutates the prototype of the Node.js request and response object and currently we have not figured out how to deal with it.

mcollina avatar Oct 20 '21 09:10 mcollina

I'm not sure what the differences are but https://github.com/fastify/middie works with inject()

billyvg avatar Nov 15 '21 15:11 billyvg

I'm not sure what the differences are but https://github.com/fastify/middie works with inject()

middle pass what the middleware needs and run it - which is just fastify fastify-express use express directly - which is both fastify (request) and express (response)

climba03003 avatar Nov 15 '21 15:11 climba03003