Устанавливать параметры по запросу при тестировании хапи-маршрутов - PullRequest
0 голосов
/ 08 января 2020

Я сейчас пишу несколько тестов для наших хапи-маршрутов. Маршрут, который я хочу протестировать, выглядит следующим образом:

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 с имя пользователя, но я не могу установить параметр для объекта ServerInjectOptions. Я получаю ошибку, что свойство не существует в типе ServerInjectOptions.

Есть ли другой способ установить массив параметров? Я не нашел что-то в документах, может быть, я пропустил это, и кто-то может сказать мне, где это найти.

Заранее спасибо

1 Ответ

1 голос
/ 08 января 2020

Для маршрута, я полагаю, вы добавляете имя параметра в путь следующим образом:

server.route(
  {
    method: 'POST',
    path: '/:userId', 
    //
    }});

И для теста вы должны иметь возможность добавить свой параметр в параметр URL:

const request : ServerInjectOptions = {
    url: '/user/parameterYouNeedToAdd',
    //
};

Или, если параметр является переменной:

const request : ServerInjectOptions = {
    url: '/user/' + parameterYouNeedToAdd,
    //
};
...