如何在 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)
})