javascript - 获取带有超测解析问题的请求
问题描述
我正在使用 supertest 来测试对 mLab 应用程序的获取请求。如果我与邮递员进行常规 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;
解决方案
我自己并没有使用过 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");
我希望,这行得通。
推荐阅读
- visual-studio - 从其他数据库插入,避免已经插入的数据
- list - 颤振'列表
' 不是类型 'List 的子类型 ' - mongodb - mongodb 可以在 $unionWith 中使用 $push
- python - Discord.py 添加一个命令来存储数据
- spring-boot - 带有 Axon 的 Spring Boot JPA
- steam - 如何在 ubuntu 中提供安装驱动器的路径
- javascript - new RegExp() 构造函数的反面是什么?
- python - 如何计算熊猫数据框中列中特定值的平均值?
- laravel - Laravel 在到期日、3 天后、一周后从不同用户到不同客户的自动发票提醒电子邮件
- javascript - 如何在发送前为两个同名字段创建实时投注?