Node.js 测试hapi路由时根据请求设置参数
我目前正在为我们的hapi路线编写一些测试。我要测试的路径如下所示:Node.js 测试hapi路由时根据请求设置参数,node.js,typescript,hapi,Node.js,Typescript,Hapi,我目前正在为我们的hapi路线编写一些测试。我要测试的路径如下所示: server.route( { method: 'POST', path: '/', options: { tags: ['api'], cors: true, handler: async (req: Hapi.Request | any, h: Hapi.ResponseObject) => { if (!req.params.user
server.route(
{
method: 'POST',
path: '/',
options: {
tags: ['api'],
cors: true,
handler: async (req: Hapi.Request | any, h: Hapi.ResponseObject) => {
if (!req.params.userId) {
throw Boom.badRequest();
}
return 200;
}
}});
所以我的测试是这样的:
it('should return 200', async () => {
const request : ServerInjectOptions = {
url: '/user',
method: 'POST',
payload: {
email: 'e@email.de',
password: 'secred',
firstname: 'John',
lastname: 'Doe'
},
app: {}
};
const response = await server.inject(request);
expect(response.statusCode).toEqual(200);
});
正如您所看到的,路由要求params数组中有一个名为userId的param,但我无法在ServerInjectOptions对象上设置参数。我得到的错误是ServerInjectOptions类型上不存在该属性
有没有其他方法可以设置params数组?我在文件里没找到什么也许我没找到,有人可以告诉我在哪里找到
提前感谢您提供的路由,我相信您会将参数名称添加到路径中,如下所示:
server.route(
{
method: 'POST',
path: '/:userId',
//
}});
对于测试,您应该能够将参数添加到url选项:
const request : ServerInjectOptions = {
url: '/user/parameterYouNeedToAdd',
//
};
或者,如果参数是一个变量:
const request : ServerInjectOptions = {
url: '/user/' + parameterYouNeedToAdd,
//
};
Uff道达尔坐错了船。你完全正确,谢谢;-)