Nock.js: как проверить наличие заголовка?

Я использую Nock с Mocha и хочу проверить, существуют ли в запросе определенные заголовки. Меня не интересуют другие заголовки, и меня не волнует конкретное содержимое заголовков, существование которых я проверяю. Есть простой способ сделать это? .matchHeader() проходит, когда определенный заголовок отсутствует, а reqheaders терпит неудачу, если я не укажу все поля заголовка.


person Boris K    schedule 28.01.2019    source источник


Ответы (1)


reqheaders — правильный подход.

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

Другая приятная особенность reqheaders заключается в том, что значение может быть функцией, возвращающей логическое значение. Поскольку вас не волнует фактическое значение заголовков, возврат true приводит к совпадению, если заголовок просто существует.

const scope = nock('http://www.example.com', {
  reqheaders: {
    'x-one': () => true,
  }
}).get('/').reply(200, 'match!')


const reqOpts = {
  hostname: 'www.example.com',
  path: '/',
  method: 'GET',
  headers: {
    'X-One': 'hello world',
    'X-Two': 'foo bar',
    'Content-Type': 'application/json',
  }
}

const req = http.request(reqOpts, res => {
  console.log("##### res status", res.statusCode)

  res.on('data', (chunk) => {
    console.log("##### chunk", chunk.toString())
  })
})

req.end()
scope.done()
person Matt R. Wilson    schedule 29.05.2019