Nock не возвращает установленные заголовки - PullRequest
2 голосов
/ 24 мая 2019

Я использую Nock для перехвата HTTP-запроса.

test.js:

const nock = require('nock');
const server = require('../server');
const request = require('request');

describe('My test', () =>{
   it('Should returns the customized header', () => {
      nock('url')
      .get('/test')
      .reply(302, {
         'user-agent': 'Mozilla'
       })

      const { headers } = await request(server).get('/test');
      expect(headers['user-agent']).to.include('Mozilla');

   }
})

Когда я запускаю тест, он не проходит, и журнал заголовков, полученныйrequest выглядит так:

 { 

 'user-agent': 'node-superagent/3.8.3',
  location: 'undefined',
  vary: 'Accept, Accept-Encoding',
  'content-type': 'text/plain; charset=utf-8',
  'content-length': '31',
  date: 'Fri, 24 May 2019 09:15:46 GMT',
  connection: 'close' 
 }

Я что-то пропустил или это нормальное поведение Nock?

1 Ответ

2 голосов
/ 27 мая 2019

Проблема в том, как вы передаете заголовки в функцию ответа. Заголовки являются третьим аргументом для этого метода, но вы предоставляете их в качестве второго аргумента, что означает, что объект с ключом user-agent используется в качестве тела. Поскольку это 302, и вы, вероятно, хотите пустое тело, вы должны передать пустую строку в качестве второго аргумента.

nock('url')
  .get('/test')
  .reply(302, '', {
    'user-agent': 'Mozilla'
  })

Документы по теме.

...