我正试图使用supertest从我的应用程序中调用一个函数,并发送一个自定义的express请求,但在发送请求时收到422错误。
这是我的自定义快递请求
export interface CreateGroupRequest extends Request {
body: {
groupName: string;
email: string;
country: string;
};
这是我的模拟请求
var testCreateGroupRequest: CreateGroupRequest = {
body: {
groupName: testName,
email: email,
country: 'US',
}
} as Request
这是我到目前为止的测试
await supertest(app)
.post("/login")
.send(testLoginBody)
.expect(200)
.then((response) => {
sessionToken = response.body.token
}).then(() => {
supertest(app)
.post("/create_group")
.set('X-JWT-Token', `${sessionToken}`)
.send(testCreateGroupRequest)
.then((response) => {
console.log({response})
})
})
响应中的消息是"0";body.groupName";是必需的";。我应该如何创建自定义请求?
下面是supertest
的一个例子:
describe('POST /users', function() {
it('responds with json', function(done) {
request(app)
.post('/users')
.send({name: 'john'})
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200)
.end(function(err, res) {
if (err) return done(err);
return done();
});
});
});
请注意,在他们的send
方法中,他们直接发送正文。他们不扩展或制作自己的Request
。
所以要解决你的问题,你只需要发送正文,而不是虚假请求:
supertest(app)
.post("/create_group")
.set('X-JWT-Token', `${sessionToken}`)
.send({
groupName: testName,
email: email,
country: 'US',
})
.set('Accept', 'application/json') // Don't forget the header for JSON!
.then(console.log) // Shortened