问题标签 [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.
node.js - 如何在节点中创建请求和响应对象
我正在尝试为我的节点/快递处理程序模拟请求和响应对象。我尝试了一些模拟库并遇到了 API 兼容性问题,这使得它们对于测试目的来说太不可靠了。
我想做的是自己创建原始请求和响应对象,并将输出定向到实时连接以外的地方。
这是我到目前为止所拥有的:
下面是一些测试代码:
我的处理程序正在将流数据源传递给响应:
当我在浏览器中加载请求时它工作正常,但我的测试超时,因为响应end
事件永远不会被触发。我应该注意,我的处理程序中有正在测试的日志记录语句,并且它一直完成到最后。
更复杂的是,我使用 nock 来模拟一些 API 请求。我必须添加以下内容以防止出现错误:
但是,该 nock 回调实际上从未被调用过。但是如果没有此代码,即使我不使用 https,我也会收到该错误。我的站点的实时版本将所有流量重定向到 https,因此可能正在建立实时连接,但是为什么我的处理程序正在执行?
javascript - 在实习生上装载诺克
我试图在我的测试中使用 nock ( https://github.com/node-nock/nock )。
如果我写var nock = require('nock');
它不会找到它,因为它没有加载。
我已经在loaderOptions中添加了包,现在我必须放入var nock = require('nock/index');
,因为如果我编写require('nock')
它会尝试加载node_modules/nock/main
,但它不存在。
该库尝试在内部加载一些诺克带来的模块,但实习生说Error: Attempt to require unloaded module lib/recorder
。
我在包中添加了 nock:{ name: 'nock', location: 'node_modules/nock' }
有什么线索吗?
谢谢。
javascript - 如何使用 nock 记录对文件的请求和响应,并在 mocha 验收测试中使用它来回放?
我继承了一个没有测试的 typescript@2 项目。
它基本上是一个 cli 任务运行器,一个任务多次请求外部 api 以创建文件。作为第一个故障保险,我想设置验收测试。
因此,我想模拟对外部 api 的调用并从本地文件中获取响应。我该如何做到这一点?
我已经研究了 nock,因为它似乎提供了这个功能,但是我该如何使用它呢?
(我没有提供示例,因为我打算自己回答我的问题,因为我最近刚刚经历了整个考验。)
node.js - 如何让 Nock 和 Mocha 配合得很好?
我正在尝试使用 nock 来拦截/模拟我的应用程序中的一些 HTTP 流量以进行测试。我们的应用程序向我们的另一个站点进行身份验证,我需要 nock 来模拟 HTTP 200(带有 JSON 数据)和 HTTP 401(没有数据)来测试用户登录或未登录时的行为(分别) .
我有两个测试在单独运行时都可以正常工作,但是如果我运行整个测试套件,其中一个总是失败。我意识到 nock 是共享状态,因为它修改了 node.js 本身处理网络流量的方式,我认为这是竞争条件的原因,但我不能是唯一一个曾经为同一个请求使用两个不同的 nock 拦截器的人两个不同的测试,所以我知道我错过了一些东西。
谁能帮我弄清楚为什么这些测试会相互影响?
我的问题与如何使用 Mocha 和 Nock 重新测试相同的 URL 有关?但我做了那里建议的事情,但他们没有帮助。
我的测试文件(同样,如果单独调用它们都可以正常工作,但在作为同一测试通过的一部分运行时会失败)如下所示:
和
reactjs - 如何正确测试反应组件方法
为了我的工作,我已经在 React 中开发了一段时间,但最近我被要求使用伊斯坦布尔让一些应用程序达到 ~100% 的测试覆盖率。在过去的几天里,我已经为这个应用程序编写了 160 多个测试,但我无法覆盖我的代码的某些部分。在涉及 AJAX 调用、setTimeout 回调和需要另一个组件才能正常运行的组件方法时,我遇到了最大的麻烦。我已经阅读了几个 SO 问题无济于事,我相信那是因为我错误地处理了这个问题。我正在使用 Enzyme、Chai 断言、Mocha、Istanbul coverage、sinon for spies,并且正在考虑 nock,因为我无法让 sinon fakeServer 工作。
这是有问题的组件方法:
}
这是该组件的测试:
sdk 只是一个使用 getJSON 构造 jQuery API 调用的模块。我的测试涵盖了函数调用,但它没有涵盖此处看到的 .done 回调: 所以我的问题是,我怎样才能正确测试 .done?如果有人有文章、教程、视频以及任何解释如何正确测试组件方法的内容,我将不胜感激!
第二个问题是,我该如何测试一个作为道具传递给子组件的方法?根据测试覆盖率要求,我必须对该方法进行测试,但其唯一目的是传递给子组件以用作 onClick。这很好,但是 onClick 依赖于另一个 AJAX 调用在子组件中返回数据。我最初的冲动是只使用酶 .find 来定位 onClick 并模拟点击事件,但是带有 onClick 的元素不存在,因为 AJAX 调用没有在测试环境中带回数据。如果你已经读到这里,我向你致敬。如果你能帮忙,我谢谢你!
javascript - Nock 正在拦截我的请求,但我的 AJAX 请求出错了
我正在测试使用以下命令发出的 AJAX 请求XMLHttpRequest
:
所以我使用 Nock(和 Mocha)设置了一个测试:
当我运行这个测试时,xhr.onerror()
会触发,而不是xhr.onload()
. 但是,通过观察 Nock 从调用到 的输出log()
,我确定 Nock 正在拦截我的 AJAX 请求,并且拦截的请求与 Nock 的预期 URL 匹配。
为什么在我的测试中xhr.onerror
被调用而不是被调用?xhr.onload
node.js - nock:有没有办法得到 unsatisfaedMocks 的列表?
我想要这样的代码:
可能吗?
reactjs - Nock 不能与 axios 一起使用获取操作异步测试
我正在尝试在 redux 测试我的异步操作,但我没有得到它。
我正在使用 nock 和 axios,所以我试图从 axios get 接收响应数据来测试我的操作:
这是我的行动:
但我在 console.log 收到此错误:
我从 Dan Abramov 那里找到了这个答案: How to unit test async Redux actions to mock ajax response
https://github.com/reactjs/redux/issues/1716
有谁知道如何使用 redux-thunk.withExtraArgument 进行测试?
提前致谢。
javascript - Repeating nock responses indefinitely
The mocking framework Nock.js removes responses after answering them. There is a feature to repeat a response n times, but is there something I can do if I want it to respond to a certain request with the same response every time it is called?