Node.js 使用Jest测试readstream响应时出错

Node.js 使用Jest测试readstream响应时出错,node.js,jestjs,mocha.js,nestjs,chai,Node.js,Jestjs,Mocha.js,Nestjs,Chai,我在测试从谷歌云商店返回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: &q

我在测试从谷歌云商店返回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,请尝试使用:


然而,更好的测试是知道预期的响应并断言ReadStream与预期值匹配。如果它是一个小图像,您可以将其加载到缓冲区并进行比较。如果图像较大,可以考虑将其存储为Base64,并将其与预期的实际值进行比较。

< P>这取决于您正在测试什么。如果您只是想确保返回ReadStream,请尝试使用:

然而,更好的测试是知道预期的响应并断言ReadStream与预期值匹配。如果它是一个小图像,您可以将其加载到缓冲区并进行比较。如果图像较大,可以考虑将其存储为Base64,并将实际与预期的

进行比较。
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)
});