获取超级解析问题的请求

时间:2018-06-06 17:37:17

标签: javascript express jestjs supertest

我正在使用supertest来测试对mLab app的请求。如果我和邮递员一起做一个普通的GET请求,我会收到:

{"_id":"5b169a9951573c50d9682d52","text":"First test note","title":"Test1"}

但是测试中收到的响应在每个引用之前添加了斜杠:

{\\"_id\\":\\"5b169a9951573c50d9682d52\\",\\"text\\":\\"First test note\\",\\"title\\":\\"Test1\\"}

这是我的测试文件:

const server = require("../../app/server");

const request = require("supertest")(server);

describe("routes: index", () => {

  test("should respond as expected", async() => {

    const app = request("http://localhost:8000");

    const response = await app.get("/notes/5b169a9951573c50d9682d52");

    expect(response).toEqual("First test note");

    expect(response).toEqual("Test1");

  });

});

这是我的服务器

const express = require('express'); // node module 
const MongoClient = require('mongodb').MongoClient;
const bodyParser = require('body-parser');
const db = require('./config/db');

const app = express();

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

app.use(bodyParser.urlencoded({
  extended: true
}));

MongoClient.connect(db.testUrl, (err, database) => {
  if (err) return console.log(err)
  require('./routes')(app, database);
  app.listen(port, () => {
    console.log('We are live on ' + port);
    console.log(process.env.PORT);
  });
})

module.exports = app;

1 个答案:

答案 0 :(得分:0)

我自己并没有使用supertest,但是简要地查看一下代码和文档会立即显示几个问题。

首先,您看到的是您的测试框架向您报告的内容 - 它是json对象的字符串表示形式。这是对的。

不正确的是您尝​​试处理响应的方式。查看文档:

https://www.npmjs.com/package/supertest

我想,你可以解决这个问题 1)设置预期类型 2)并通过访问响应的正文成员

const response = await app.get("/notes/5b169a9951573c50d9682d52").set('Accept', 'application/json');

expect(response.body.text).toEqual("First test note");

我希望,这有效。