问题标签 [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.
javascript - superagent 和 nock 如何协同工作?
在 node.js 中,我无法让 superagent 和 nock 一起工作。如果我使用请求而不是超级代理,它会完美运行。
这是一个超级代理无法报告模拟数据的简单示例:
res 对象没有“文本”属性。出问题了。
现在,如果我使用请求做同样的事情:
模拟内容正确显示。
我们在测试中使用了 superagent,所以我宁愿坚持下去。有谁知道如何使它工作?
非常感谢,泽维尔
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 中的模块……这不重要吗?任何帮助表示赞赏
node.js - 指定特定的诺克请求
我正在寻找一种方法来指定每个 mocha 测试将调用哪个nock请求。问题是我有大约 50 个 nock 请求,所有这些请求都具有相同的确切 url(发布数据不同),这使得在 mocha中使用skip()
和使用非常痛苦。only()
我正在考虑使用标题来区分。有更好的选择吗?
javascript - Node.js - 模块:nock - 带有回调的 .reply 不起作用
我正在使用 nock 模块来拦截对我的 API 服务的 HTTP 调用(仍未开发)并返回一些我在临时数据库中拥有的模拟数据。
我注意到 http 请求被正确拦截,但我看到的问题是,在我的函数从 temp DB 获取所需数据之前,nock 会回复。
对于一个简单的演示,看下面的代码:
使用上面的代码,当我不使用超时时,我可以按预期正确返回数据。但是由于这个超时,nock 似乎并没有等待回调,而是继续响应一个空的 200 响应。
node.js - Node.js - Nock 和 nedb - 在回调完成之前执行回复
我正在使用 nock 来拦截对我的 API 主机的调用,并在返回响应之前进行一些本地数据库查找。
请参考以下代码。我拦截对“入口点”的调用,并希望回复从本地数据存储中获取的数据。
我相信这是 nock 模块本身的问题,我很少听到使用流的建议。你能帮忙解决这个问题吗?
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 的错误
javascript - 如何返回对象而不是字符串以响应 nock?
当我使用它存根请求时,nock
它会返回String
结果而不是Object
使用'Content-Type': 'application/json'
:
检查:
输出:
在代码中,我使用request
返回Object
相同数据的模块。我也尝试过sinon
(对我不起作用)fakeweb
但遇到了同样的问题。
我的代码,我正在尝试测试:
它在实际请求中返回一个对象。
附言。我可以在我的响应处理程序中添加下一个代码:
但有些查询返回 xml 字符串,我不对这些更改负责。
假网:
结果相同。
更新:
我读了几篇文章,它们使用 JSON 对象,没有解析它(使用 nock),所以它应该返回 JSON 对象,与请求库的方式相同。
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"
}
}
]
javascript - 使用 nock 在 mocha 中模拟具有某些请求标头的超级代理请求
我有以下代码:
现在,除非我reqheaders
想念application/json
对text/html
.
我想念理解的用途reqheaders
吗?如何使用 nock 模拟请求中具有某些标头的请求?
javascript - Nock - 如何模拟二进制响应
我正在编写与 PayPal 经典 API 交互的代码。此交互的第一部分是向 PayPal 发送请求并从他们那里获取令牌。为此,我使用简单的 https 请求:
}
它与 PayPal 沙箱完美配合,但是,现在我想对我的代码进行单元测试,但我不知道如何模拟从 PayPal 获得的响应。
我检查了来自 PayPal 的行响应如下:
所以它看起来像二进制数据。我想用 nock 来模拟响应,但我想知道我该怎么做?如何用我的回复的二进制版本做出回应?
我试过这样的事情:
但后来我得到:
未捕获的错误:EOF 后的 stream.push()
看起来模拟响应中没有发送任何数据。