nock не работает с запросом (запрос-обещание)

Я пытаюсь запустить фрагмент кода ниже:

const nock = require('nock');
const request = require('request-promise');

nock('https://some.api.here.com')
  .get('/objects')
  .matchHeader({})
  .reply(200, []);

request({
  method: 'GET',
  uri: `https://some.api.here.com/objects`,
  headers: {}
});

в результате вижу ошибку:

check/node_modules/nock/lib/request_overrider.js:23
  var key = name.toLowerCase();
                 ^

TypeError: name.toLowerCase is not a function
    at getHeader (/check/node_modules/nock/lib/request_overrider.js:23:18)
    at Object.RequestOverrider.options.getHeader (/check/node_modules/nock/lib/request_overrider.js:125:12)
    at checkHeaders (/check/node_modules/nock/lib/interceptor.js:205:51)
    at Array.every (<anonymous>)
    at Interceptor.match (/check/node_modules/nock/lib/interceptor.js:209:39)
    at /check/node_modules/nock/lib/request_overrider.js:237:26
    at baseFindIndex (/check/node_modules/lodash/lodash.js:823:11)
    at findIndex (/check/node_modules/lodash/lodash.js:7275:14)
    at Function.find (/check/node_modules/lodash/lodash.js:5098:21)
    at end (/check/node_modules/nock/lib/request_overrider.js:236:21)
    at OverriddenClientRequest.RequestOverrider.req.end (/check/node_modules/nock/lib/request_overrider.js:153:7)
    at Request.end (/check/node_modules/request/request.js:1238:12)
    at /check/node_modules/request/request.js:413:12
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
    at Function.Module.runMain (module.js:611:11)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:578:3

Любые идеи?

cat package.json
{
  "dependencies": {
    "nock": "^9.0.22",
    "request": "2.31.0",
    "request-promise": "^4.2.2"
  }
}

> node -v
v8.3.0

person kharandziuk    schedule 29.09.2017    source источник


Ответы (1)


Я думаю, что вы должны указать key для заголовка внутри .matchHeader({}), который на самом деле является именем заголовка, и кажется, что правильный способ его использования, как указано ниже:

.matchHeader('accept', 'application/json')

Итак, в вашем случае вам не хватает имени заголовка. Источник

Вы также можете просмотреть исходный код этого модуля (затронутая строка).

person Ramiz Wachtler    schedule 29.09.2017
comment
Это сработало nock(xvc-api:5080/catalog) .get(/v3/providers/xxx/ services/xcv-Demo) .matchHeader({ 'content-type': 'application/json', 'Accept': 'application/json' }) - person Shailesh kumar; 28.03.2019