ladjs / supertest

đź•· Super-agent driven library for testing node.js HTTP servers using a fluent API. Maintained for @forwardemail, @ladjs, @spamscanner, @breejs, @cabinjs, and @lassjs.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`_body` key instead of `body` in response

MartialSeron opened this issue · comments

Describe the bug

Node.js version: >= 14

OS version: Docker devcontainer with vscode image

Description:

There is a _body key instead of body in response.
I don't know if it's an expected behavior due to recent changes but it's a breaking change for all my tests

Actual behavior

// ./app.js

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.json({
    ok: true,
  })
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
});

module.exports = app;
// ./tests/app.test.js

const supertest = require('supertest');
const { expect } = require('chai');
const app = require('../app.js');


const server = supertest.agent(app);

describe("Tests", () => {
  it('should return a JSON object', async () => {
    const response = await server.get('/').expect(200);

    console.log({ response });

    expect(response).to.haveOwnProperty('body');
  });
});

Result

  1) Tests
       should return a JSON object:
     AssertionError: expected { Object (_events, _eventsCount, ...) } to have own property 'body'
      at Context.<anonymous> (tests/app.test.js:14:25)
      at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

In the response object there is no "body", only a "_body"

image

Expected behavior

"body" should be present and test should pass.

Code to reproduce

Here is a replit example : https://replit.com/@MartialSeron/RowdyTenseLocations#tests/app.test.js
You just have to run npm test in the shell

Checklist

  • I have searched through GitHub issues for similar issues.
  • I have completely read through the README and documentation.
  • I have tested my code with the latest version of Node.js and this package and confirmed it is still not working.

It works up to version 6.1.6, but from version 6.2.0, it doesn't work anymore.