我正在尝试对我一个处理流程较为复杂的node-js模块进行单元测试。我试图模拟一个流(我将写入其中),因为我的模块中有“.on('data/end)”监听器,我希望能够触发它们。基本来说,我想要做到这样:
var mockedStream = new require('stream').readable();
mockedStream.on('data', function withData('data') {
console.dir(data);
});
mockedStream.on('end', function() {
console.dir('goodbye');
});
mockedStream.push('hello world');
mockedStream.close();
这段代码可以执行,但在进行 push 操作后 'on' 事件没有被触发(并且 .close() 是无效的)。
我所找到的有关流的指南都使用 'fs' 或 'net' 库作为创建新流的基础 (https://github.com/substack/stream-handbook),或者用 sinon 进行模拟,但是模拟变得非常冗长。
有没有一种简便的方法来提供这样的虚拟流?