如何在 fastify 中测试 post 路由?
How to test post route in fastify?
我正在使用 fastify-cli。我已经创建了路由 post。当我从 Postman 调用它时它正常工作,但当我从测试命令调用它时它不工作。它说 FST_ERR_CTP_INVALID_MEDIA_TYPE。我的错误在哪里?
const UserCreate = {
email: 'email@email.com',
password: bcrypt.hashSync('password', salt),
name: 'User Fullname',
username: 'cooluser',
initial: 'U',
roleId: 1,
status: 'active'
}
test(`create User`, async (t) => {
const app = build(t)
const res = await app.inject({
url: '/administrator/user',
method: 'POST',
payload: JSON.stringify(UserCreate),
headers: {
'Accept': 'application/json'
}
})
console.log(`res.payload`, res.payload)
t.equal(JSON.parse(res.payload).code, 200)
})
已解决。
我只需要将 payload: JSON.stringify(UserCreate)
更改为 body: UserCreate
。所以我不需要将 usercreate 对象字符串化为文本。而且我还从正文中获取数据,所以我还需要更改为 body
而不是 payload
。
测试代码应该是这样的:
test(`create User`, async (t) => {
const app = build(t)
const res = await app.inject({
url: '/administrator/user',
method: 'POST',
body: UserCreate,
headers: {
'Accept': 'application/json'
}
})
console.log(`res.payload`, res.payload)
t.equal(JSON.parse(res.payload).code, 200)
})
我正在使用 fastify-cli。我已经创建了路由 post。当我从 Postman 调用它时它正常工作,但当我从测试命令调用它时它不工作。它说 FST_ERR_CTP_INVALID_MEDIA_TYPE。我的错误在哪里?
const UserCreate = {
email: 'email@email.com',
password: bcrypt.hashSync('password', salt),
name: 'User Fullname',
username: 'cooluser',
initial: 'U',
roleId: 1,
status: 'active'
}
test(`create User`, async (t) => {
const app = build(t)
const res = await app.inject({
url: '/administrator/user',
method: 'POST',
payload: JSON.stringify(UserCreate),
headers: {
'Accept': 'application/json'
}
})
console.log(`res.payload`, res.payload)
t.equal(JSON.parse(res.payload).code, 200)
})
已解决。
我只需要将 payload: JSON.stringify(UserCreate)
更改为 body: UserCreate
。所以我不需要将 usercreate 对象字符串化为文本。而且我还从正文中获取数据,所以我还需要更改为 body
而不是 payload
。
测试代码应该是这样的:
test(`create User`, async (t) => {
const app = build(t)
const res = await app.inject({
url: '/administrator/user',
method: 'POST',
body: UserCreate,
headers: {
'Accept': 'application/json'
}
})
console.log(`res.payload`, res.payload)
t.equal(JSON.parse(res.payload).code, 200)
})