gpt4 book ai didi

javascript - 如何模拟 `createReadStream` 上的 EventEmitter?

转载 作者:行者123 更新时间:2023-11-30 09:44:18 24 4
gpt4 key购买 nike

我正在尝试编写一个测试用例,以判断此代码​​何时会发出错误:

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;
} }
},
};

关于javascript - 如何模拟 `createReadStream` 上的 EventEmitter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39579525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com