【发布时间】:2015-02-26 19:48:24
【问题描述】:
我想测试请求返回中的错误。我在测试中使用了 nock,如何强制 Nock 引发错误?我想达到 100% 的测试覆盖率并且需要为此测试 err 分支
request('/foo', function(err, res) {
if(err) console.log('boom!');
});
永远不要进入 if err 分支。即使 hit err 是一个有效的响应,我在测试中的 Nock 行看起来像这样
nock('http://localhost:3000').get('/foo').reply(400);
编辑: 感谢一些 cmets:
- 我试图模拟请求中的错误。从节点手册: https://nodejs.org/api/http.html#http_http_request_options_callback 如果在请求期间遇到任何错误(可能是 DNS 解析、TCP 级别错误或实际的 HTTP 解析错误),则在返回的请求对象上会发出“错误”事件
- 错误代码(例如 4xx)未定义 err 变量。我试图准确地模拟这一点,无论定义 err 变量并评估为 true 的错误
【问题讨论】:
-
你就不能提出一个错误的要求吗?例如将 url 设置为
''或undefined。 -
@agconti with nock 你模拟了服务器响应,我试图强制一个 http 错误。来自节点手册 (nodejs.org/api/http.html#http_http_request_options_callback) 如果在请求期间遇到任何错误(可能是 DNS 解析、TCP 级别错误或实际 HTTP 解析错误),则会在返回的请求对象上发出“错误”事件。
-
这种行为与模型无关。您是否尝试过让它回复 HTTP 错误消息?
-
@E_net4 是的,res.statusCode 中有一条 http 错误消息,它不会生成 javascript 错误
-
好吧,别介意我最后的评论。 HTTP 错误消息不会触发这种错误。但请说明您要模拟的错误类型。