问题标签 [nock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4154 浏览

javascript - superagent 和 nock 如何协同工作?

在 node.js 中,我无法让 superagent 和 nock 一起工作。如果我使用请求而不是超级代理,它会完美运行。

这是一个超级代理无法报告模拟数据的简单示例:

res 对象没有“文本”属性。出问题了。

现在,如果我使用请求做同样的事情:

模拟内容正确显示。

我们在测试中使用了 superagent,所以我宁愿坚持下去。有谁知道如何使它工作?

非常感谢,泽维尔

0 投票
1 回答
1761 浏览

node.js - Nock 拦截 HTTP POST 请求并在 CoffeeScript 中测试 Mocha/Node.js 模块期间挂起

我想知道您是否经历过“nock”模块拦截http请求但没有任何日志记录就停止的情况……至少在我看来。我可能错了。这是测试:

...

如您所见,Nock 的日志记录已打开,但它没有记录任何内容。模块在 test - domain 中发出的 HTTP 请求被拦截,这意味着它没有到达实际的服务器。res.on('data' or 'end') 不会从模块中的请求中调用:

如果关闭 Nock 拦截,则该模块工作(到达服务器并由模块处理响应)。有了这个,我得出结论,问题是箭尾拦截。此外,如果 HTTP POST 请求是从测试文件本身发出的,而不是从模块发出的,它就可以工作……测试文件在 JS 中,但在 CoffeeScript 中的模块……这不重要吗?任何帮助表示赞赏

0 投票
1 回答
748 浏览

node.js - 指定特定的诺克请求

我正在寻找一种方法来指定每个 mocha 测试将调用哪个nock请求。问题是我有大约 50 个 nock 请求,所有这些请求都具有相同的确切 url(发布数据不同),这使得在 mocha中使用skip()和使用非常痛苦。only()我正在考虑使用标题来区分。有更好的选择吗?

0 投票
1 回答
1505 浏览

javascript - Node.js - 模块:nock - 带有回调的 .reply 不起作用

我正在使用 nock 模块来拦截对我的 API 服务的 HTTP 调用(仍未开发)并返回一些我在临时数据库中拥有的模拟数据。

我注意到 http 请求被正确拦截,但我看到的问题是,在我的函数从 temp DB 获取所需数据之前,nock 会回复。

对于一个简单的演示,看下面的代码:

使用上面的代码,当我不使用超时时,我可以按预期正确返回数据。但是由于这个超时,nock 似乎并没有等待回调,而是继续响应一个空的 200 响应。

0 投票
1 回答
354 浏览

node.js - Node.js - Nock 和 nedb - 在回调完成之前执行回复

我正在使用 nock 来拦截对我的 API 主机的调用,并在返回响应之前进行一些本地数据库查找。

请参考以下代码。我拦截对“入口点”的调用,并希望回复从本地数据存储中获取的数据。

我相信这是 nock 模块本身的问题,我很少听到使用流的建议。你能帮忙解决这个问题吗?

0 投票
4 回答
16590 浏览

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

我想测试请求返回中的错误。我在测试中使用了 nock,如何强制 Nock 引发错误?我想达到 100% 的测试覆盖率并且需要为此测试 err 分支

永远不要进入 if err 分支。即使 hit err 是一个有效的响应,我在测试中的 Nock 线看起来像这样

编辑: 感谢一些评论:

  • 我试图模拟请求中的错误。来自节点手册: https ://nodejs.org/api/http.html#http_http_request_options_callback 如果在请求期间遇到任何错误(可能是 DNS 解析、TCP 级别错误或实际 HTTP 解析错误),则会出现“错误”事件在返回的请求对象上发出
  • 错误代码(例如 4xx)没有定义 err 变量。我试图准确地模拟它,无论定义 err 变量并评估为 true 的错误
0 投票
1 回答
5825 浏览

javascript - 如何返回对象而不是字符串以响应 nock?

当我使用它存根请求时,nock它会返回String结果而不是Object使用'Content-Type': 'application/json'

检查:

输出:

在代码中,我使用request返回Object相同数据的模块。我也尝试过sinon(对我不起作用)fakeweb但遇到了同样的问题。

我的代码,我正在尝试测试:

它在实际请求中返回一个对象。

附言。我可以在我的响应处理程序中添加下一个代码:

但有些查询返回 xml 字符串,我不对这些更改负责。

假网

结果相同。

更新:

我读了几篇文章,它们使用 JSON 对象,没有解析它(使用 nock),所以它应该返回 JSON 对象,与请求库的方式相同。

0 投票
4 回答
2080 浏览

javascript - 如何解码 nock 记录的响应

如何对 nock 记录器产生的输出进行临时解码/解压缩,以便我们可以将响应视为文本?我想我们不明白响应是否被压缩和/或编码

当我们将它加载到 nock 中时,该对象会正常工作,并且我们的测试表现与我们预期的一样。要查看 API 生成了什么,我们必须将日志记录语句放入实现文件中。

我们正在记录并保存 JSON 响应:

我们的文件看起来像:

[ { "scope": "https://some.api.com:443", "method": "POST", "path": "/auth?key=some_key", "body": { "logonId": "user@api.com", "logonPassword": "secret" }, "status": 400, "response": [ "1f8b0800000000000000458cbd6ac34010067b3fc5c735691263bb741344ec42f827420a492916692d1d9cb461f71c218cdf3d97266e6786b92d00c7aaa205290d1c59cd6d71bb3fff8b376939a1cd6abd7ac003cf89b97a5f96757efecc8ef9aede9fb2fc586455f5f55eeedca33db119757f0f5704266334a2ca4d44ec19170941263f76f06657b62dd6cb2af919ec9357cc7255f0cb403e4014df643689b6687d3b3e450c149b1e534f1113a3a71f868cb8f8c04b7ca48b8fa08efcf8ea16f75fa1776d91ee000000" ], "headers": { "cache-control": "no-store, no-cache, must-revalidate", "content-encoding": "gzip", "content-type": "application/json", "transfer-encoding": "chunked", "connection": "Close" } } ]

0 投票
1 回答
1155 浏览

javascript - 使用 nock 在 mocha 中模拟具有某些请求标头的超级代理请求

我有以下代码:

现在,除非我reqheaders想念application/jsontext/html.

我想念理解的用途reqheaders吗?如何使用 nock 模拟请求中具有某些标头的请求?

0 投票
1 回答
3211 浏览

javascript - Nock - 如何模拟二进制响应

我正在编写与 PayPal 经典 API 交互的代码。此交互的第一部分是向 PayPal 发送请求并从他们那里获取令牌。为此,我使用简单的 https 请求:

}

它与 PayPal 沙箱完美配合,但是,现在我想对我的代码进行单元测试,但我不知道如何模拟从 PayPal 获得的响应。

我检查了来自 PayPal 的行响应如下:

所以它看起来像二进制数据。我想用 nock 来模拟响应,但我想知道我该怎么做?如何用我的回复的二进制版本做出回应?

我试过这样的事情:

但后来我得到:

未捕获的错误:EOF 后的 stream.push()

看起来模拟响应中没有发送任何数据。