1

我正在尝试编写一个测试用例,以了解由于此代码而引发错误的时间:

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!')) }
     },
};
4

1 回答 1

4

像其他任何事件一样发出它:

stream.emit('error', new Error('Random error!'));

所以,上面的代码应该是这样的:

const s3 = {
  getObject: () => {
    return { createReadStream: () => {
      process.nextTick(function() {
        emitter.emit('error', new Error('whoops!'));
      });
      return emitter;
    } }
  },
};
于 2016-09-19T18:13:34.127 回答