使用Jest获得错误测试读取流响应

问题描述

测试从Google Cloud Store返回readStream的函数时,出现超时错误。

// Test case
import { createResponse } from 'node-mocks-http';
it('getImage from google cloud storage',async done => {
    let res: Response = createResponse();
    let data = await controller.getImage({ image: "text data"},object,response);
});

// Function that calls google gloud storage and return object.
public async getImage(imageReqDto,baseDto,response){
    let bucket = this.storage.bucket(process.env.IMAGE_BUCKET);
    let file = bucket.file(image);
    return file.createReadStream().pipe(response);;
}

任何解决方案在接收到缓冲区数据后如何成功通过测试用例。

解决方法

这取决于您要测试的内容。如果您只是想确保返回ReadStream,请尝试使用.toBeInstanceOf()

it('readstream is returned,when .getImage() is invoked with image data',async () => {
    const response: Response = createResponse();

    const stream = await controller.getImage({image: "text data"},object,response);

    expect(stream).toBeInstanceOf(ReadStream)
});

但是,更好的测试方法是知道预期的响应并断言ReadStream与预期值匹配。如果图像很小,则可以加载到缓冲区中进行比较。如果图像较大,则可以考虑将其存储为base64,并将实际值与预期值进行比较。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...