2017-09-29 1 views
0

Je suis en train d'exécuter un morceau de code ci-dessous:Nock ne fonctionne pas avec la demande (demande-promesse)

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: {} 
}); 

par conséquent, je vois une erreur:

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 

Tous des idées?

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

> node -v 
v8.3.0 

Répondre

2

Je pense que vous devez spécifier un key l'en-tête à l'intérieur .matchHeader({}), qui est en fait le nom d'en-tête et il semble que la bonne façon de l'utiliser, est comme indiqué ci-dessous:

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

Dans votre cas, le nom de l'en-tête est manquant. Source

Vous pouvez également jeter un coup d'œil dans le source de ce module (la ligne affectée).