Нок не соответствует HTTPS-вызову в промежуточном программном обеспечении? - PullRequest
0 голосов
/ 24 января 2019

У меня есть промежуточное ПО, которое выполняет аутентификацию с помощью стороннего сервиса по запросу. Я делаю этот запрос с суперагентом. Очевидно, я хочу высмеять это в своих тестах, так как это сильно их тормозит, а также зависит от стороннего сервера.

При использовании nock, похоже, запрос вообще не найден. Я даже пытался использовать рекордер, и он собирает только реальные запросы моих локальных конечных точек. (Хотя он использует незнакомый IP и порт?).

Запрос внутри моего промежуточного программного обеспечения;

export default async (req, res, next) => {
      const user = await superagent
      .get(`https://example.com/session/`)
      .query({ session })
      .set('Api-Key', '1234');
}

My Nock Instance;

nock('https://example.com/session/')
  .persist()
  .get('/session/')
  .reply(200, {
    success: true,
    username: 'testuser',
  })
  .log(console.log);

1 Ответ

0 голосов
/ 24 января 2019

У вас есть 2 проблемы здесь.

Во-первых, вы определяете дважды /session/:

Выберите:

Во-вторых, вы добавляете строку запроса в свой вызов(.query({ session })), но вы не говорите это Ноку, используя .query(true).

В конце у вас должно получиться что-то вроде:

nock('https://example.com/session/')
  .persist()
  .get('/') // rewrote here
  .query(true) // added here
  .reply(200, {
    success: true,
    username: 'testuser',
  })
  .log(console.log);
...