gpt4 book ai didi

json - 如何使用Mocha和Supertest发送格式错误的JSON?

转载 作者:搜寻专家 更新时间:2023-11-01 00:32:02 25 4
gpt4 key购买 nike

我有当前要运行的测试:

var request = require('supertest');

it('should be malformed json', function(done) {
request(config.base)
.post('/authenticate')
.send('{"project":{"description":\'test"}}')
.set('Authorization', 'Bearer ' + config.token)
.expect('Content-Type', /json/)
.expect(status.BAD_REQUEST);
});

然而,supertest 似乎验证了它,它只是在正文中发送'{}'。知道如何解决这个问题吗?

最佳答案

您正在将一个字符串传递给 send 方法,因此它将按原样发送到服务器(您可以在那里写任何东西!)。

一旦服务器收到字符串,它就会解析 JSON 并发现错误。接下来会发生什么取决于服务器应用程序的配置方式(或您使用的框架)。在这种情况下,服务器可能会忽略任何格式错误的 JSON 输入,因此就像您在没有任何输入的情况下调用了 /authenticate

TL;DR: send() 只发送您传递给它的任何字符串。如果要引发错误,则需要修改服务器,而不是测试套件。

编辑

我又做了一些挖掘。首先,正如我之前所说,send() 确实保留了字符串原样。从代码中可以看出:https://github.com/visionmedia/superagent/blob/master/lib/client.js#L778

也就是说,您没有告诉服务器请求正文是 JSON 格式,所以您所说的内容被解释为“text/plain”并且未被解析。要将手动 JSON 字符串传递给 send(),您还需要指定请求的内容类型:

request(config.base)
.post('/authenticate')
.type('json')
.send('{"project":{"description":\'test"}}')
//...

关于json - 如何使用Mocha和Supertest发送格式错误的JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com