为什么http response.body为空

时间:2017-06-02 08:10:22

标签: http httpresponse

在为我的快速API编写测试时,我想检查response.body是否有我期望的html。 我发现响应对象有一个body属性,但它是空的。我在response.text属性中找到了html。 当我使用Postman检查响应时,它使用标题详细信息的单词标题和html数据的主体。这是我的预期。这种差异使我感到困惑,因为我只是在学习http。 我不是在询问我自己的代码,因为我在不同的网站(www.bbc.co.uk)上尝试过,并得到了相同的东西。 为什么措辞有区别?如果没有返回数据,那么response.body是什么?

以下是我的测试中使用的代码。这是ejs模板;

<html>
<head></head>
<body>Hello again world!</body>
</html>

这是快递应用程序;

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

const port = process.env.PORT || 3000;

app.set('view engine', 'ejs');

app.get('/', function(req, res) {
    res.status(200).render('index');
});

app.get('*', function(req, res){
    res.status(404).send('what???');
});

app.listen(3000, function() {
    console.log('Example app listening on port ' + port);
});

以下是测试;

const chai = require('chai');
const chaiHttp = require('chai-http');
const expect = require('chai').expect;
chai.use(chaiHttp);

const api = 'www.bbc.co.uk';

describe('The phonics API', () => {
    it('should return status', (done) => {
        chai.request('http://localhost:3000')
            .get('/')
            .end((err, res) => {
                expect(res).to.have.status(200);
                expect(res.body).to.exist;
                done();
            });
    });

    it('should return an HTML file in the body', (done) => {
        chai.request('http://localhost:3000')
            .get('/')
            .end((err, res) => {
                expect(res).to.be.html;
                done();
            });
    });

    it('should return status 404 for wrong url', (done) => {
        chai.request('http://localhost:3000')
            .get('/resersa')
            .end((err, res) => {
                expect(res).to.have.status(404);
                done();
            });
    });

    it('should respond with a body', (done) => {
        chai.request(api)
        .get('/')
            .end((err, res) => {
                expect(res.body).to.exist;
                console.log(res.body);
                done()
            });
    });
});

在上一次测试中,我添加了console.log(res.body)以查看其中的内容。它打印{}。当我将其更改为console.log(res.test)时,我会得到上面的html。

当我使用邮递员GET http://localhost:3000时,它在名为body的标签下有html。

0 个答案:

没有答案