javascript - nock 不适用于请求(请求 promise )

标签 javascript node.js 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

最佳答案

我认为你必须为.matchHeader({})内的 header 指定一个key,这实际上是 header 名称,这似乎是正确的方法使用它,如下所述:

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

因此,在您的情况下,您缺少 header 名称。 Source

您还可以简要查看source该模块(受影响的线路)的。

关于javascript - nock 不适用于请求(请求 promise ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46490663/

相关文章:

javascript - cometd ,长轮询与 jquery 教程

javascript - Node 整数与对象中的函数范围?

javascript - 如何处理for循环中nodejs的回调函数?

node.js - 将请求传递给特定的 fork Node 实例

node.js - 如何使用 Nock 测试请求中的错误?

unit-testing - Nock拦截请求但返回空对象

node.js - 无法使用诺克移除拦截器

javascript - Jquery 切换,如果禁用 javascript,则将用户带到页面

node.js - npm run在vuejs项目中转换服务时,javascript堆内存不足?

javascript - 如何防止 iOS Safari 上屏幕底部的滚动事件