如何在 createReadStream 上模拟 EventEmitter?
How to mock an EventEmitter on `createReadStream`?
我正在尝试编写一个测试用例,以判断何时由于此代码而发出错误:
s3.getObject({
Bucket: mediaBucket,
Key: mediaId,
}).createReadStream()
我已经使用虚拟 S3 对象进行了测试,并且我正在使用 MemoryStream 来涵盖调用成功的情况。如何发出错误,以便我可以编写一个测试来测试 .on('error') function(error)..
?
中的行为
这是我尝试过的方法,但没有成功:
beforeEach(function () {
var emitter = new EventEmitter;
const s3 = {
getObject: () => {
return { createReadStream: () => emitter.emit('error', new Error('Random error!')) }
},
};
像发送任何其他事件一样发出它:
stream.emit('error', new Error('Random error!'));
所以,上面的代码应该是这样的:
const s3 = {
getObject: () => {
return { createReadStream: () => {
process.nextTick(function() {
emitter.emit('error', new Error('whoops!'));
});
return emitter;
} }
},
};
我正在尝试编写一个测试用例,以判断何时由于此代码而发出错误:
s3.getObject({
Bucket: mediaBucket,
Key: mediaId,
}).createReadStream()
我已经使用虚拟 S3 对象进行了测试,并且我正在使用 MemoryStream 来涵盖调用成功的情况。如何发出错误,以便我可以编写一个测试来测试 .on('error') function(error)..
?
这是我尝试过的方法,但没有成功:
beforeEach(function () {
var emitter = new EventEmitter;
const s3 = {
getObject: () => {
return { createReadStream: () => emitter.emit('error', new Error('Random error!')) }
},
};
像发送任何其他事件一样发出它:
stream.emit('error', new Error('Random error!'));
所以,上面的代码应该是这样的:
const s3 = {
getObject: () => {
return { createReadStream: () => {
process.nextTick(function() {
emitter.emit('error', new Error('whoops!'));
});
return emitter;
} }
},
};