Node.js 测试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

我目前正在为我们的hapi路线编写一些测试。我要测试的路径如下所示:

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道达尔坐错了船。你完全正确,谢谢;-)