Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何测试node.js http请求生成的事件?_Node.js_Unit Testing_Mocha.js_Sinon - Fatal编程技术网

如何测试node.js http请求生成的事件?

如何测试node.js http请求生成的事件?,node.js,unit-testing,mocha.js,sinon,Node.js,Unit Testing,Mocha.js,Sinon,我有一个node.js代码,我正在用mocha和sinon进行测试 var request = require('request'); request.get(url, function (error, response, body) { /* code I already tested */ }) .on('error', function(err) { /* code I want to test */ }) 我已经用sinonvar requestGet=sinon.stub(请

我有一个node.js代码,我正在用mocha和sinon进行测试

var request = require('request');
request.get(url, function (error, response, body) {
  /* code I already tested */
})
.on('error', function(err) {
  /* code I want to test */
})
我已经用sinon
var requestGet=sinon.stub(请求“get”)创建了一个存根


现在我想测试当
请求时执行的代码
/*我想测试的代码*/
。get()
发出一个
错误
事件,但我不知道怎么做。

你只需要制作你自己的
事件发射器
,存根
。get
方法并按你的意愿使用它。您将能够发出任何事件:

//存根
发射器=新的EventEmitter();
stub(请求'get')。返回(发射器);
//当您需要启动活动时:

emit('error',new error('critical error')
您只需创建自己的
EventEmitter
,存根
。获取
方法并根据需要使用它。您将能够发出任何事件:

//存根
发射器=新的EventEmitter();
stub(请求'get')。返回(发射器);
//当您需要启动活动时:

emit('error',new error('critical error')
只是出于好奇,为什么要使用
.callsFake(()=>emitter)
而不是
。返回(()=>发射器)?@Edo-Hm.:)那只是一种习惯
.returns
看起来更好,我会编辑答案。只是出于好奇,你为什么要使用
.callsFake(()=>emitter)
而不是
。返回(()=>发射器)?@Edo-Hm.:)那只是一种习惯
.returns
看起来更好,我会编辑答案。