如何测试node.js http请求生成的事件?
我有一个node.js代码,我正在用mocha和sinon进行测试如何测试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(请
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(请求“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
看起来更好,我会编辑答案。