ExpressJS res.send() 不发送数据

发布于 2025-01-11 13:43:49 字数 602 浏览 0 评论 0原文

我不确定为什么 GET 请求无法向我发回数据
基本上,我的 GET 请求如下所示:

router.get('/', (req, res) => {
res.set('Content-Type', 'text/html')
res.status(200).send(Buffer.from('<p>some html</p>'))
});

然后我使用 supertest 来测试此路由。

  test('test', async () => {
    const res = await request(app)
      .get('/')

    expect(res.statusCode).toBe(200);
    expect(res.body.toString()).toBe("<p>some html</p>");
  });

然后我 console.log(res.body),它返回空的{}
我不知道为什么路线返回给我空的对象。

I'm not sure why the GET request can't send me back the data
Basically, my GET request looks like:

router.get('/', (req, res) => {
res.set('Content-Type', 'text/html')
res.status(200).send(Buffer.from('<p>some html</p>'))
});

Then I use supertest to test this route.

  test('test', async () => {
    const res = await request(app)
      .get('/')

    expect(res.statusCode).toBe(200);
    expect(res.body.toString()).toBe("<p>some html</p>");
  });

Then I console.log(res.body), it returns me the empty{}
I'm not sure why the route return give me the empty obj.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

两人的回忆 2025-01-18 13:43:49

响应数据应从 res.text 获取,而不是从 res.body 获取。

app.js

const app = require('express')();

app.get('/', (req, res) => {
  res.set('Content-Type', 'text/html');
  res.status(200).send(Buffer.from('<p>some html</p>'));
});

module.exports = app;

app.test.js

const app = require('./app');
const request = require('supertest');

describe('71328567', () => {
  test('should pass', async () => {
    const res = await request(app).get('/');
    expect(res.type).toBe('text/html');
    expect(res.text).toBe('<p>some html</p>');
  });
});

测试结果:

 PASS  stackoverflow/71328567/app.test.js
  71328567
    ✓ should pass (26 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        1.657 s

The response data should be get from res.text not res.body.

app.js:

const app = require('express')();

app.get('/', (req, res) => {
  res.set('Content-Type', 'text/html');
  res.status(200).send(Buffer.from('<p>some html</p>'));
});

module.exports = app;

app.test.js:

const app = require('./app');
const request = require('supertest');

describe('71328567', () => {
  test('should pass', async () => {
    const res = await request(app).get('/');
    expect(res.type).toBe('text/html');
    expect(res.text).toBe('<p>some html</p>');
  });
});

Test result:

 PASS  stackoverflow/71328567/app.test.js
  71328567
    ✓ should pass (26 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        1.657 s
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文