首页 > 解决方案 > 笑话:测试完成后无法登录

问题描述

我有一个调整图像大小的功能:

export default function resize(
    inputPath: string,
    outputPath: string,
    format: string,
    width: number | null,
    height: number | null
): Promise<string> {
    return new Promise((resolve) => {
        setTimeout(() => {
            const readStream: fs.ReadStream = fs.createReadStream(inputPath);
            const writeStream: fs.WriteStream = fs.createWriteStream(outputPath);

            writeStream.on('error', () => console.log('Error'));
            writeStream.on('close', () => console.log('Successfully saved'));

            let transform: sharp.Sharp = sharp();
            if (format === 'jpeg' || format === 'png') {
                transform = transform.toFormat(format);
            }

            transform = transform
                .resize(width, height)
                .on('info', (fileInfo) => console.log('Successfully resized'));

            readStream.pipe(transform).pipe(writeStream);
            resolve('slow');
        }, 1000);
    });
}

我编写了一个将调用该函数的测试:

describe('reszie', () => {
    test('resize the images', async () => {

        const s: string = await resize(
            'src/images/full/palmtunnel.jpg',
            'src/images/thumbnails/palmtunnel_500_400.jpg',
            'jpeg',
            500,
            400
        );

        console.log(s);
    });
});

但是,我收到下面提供的错误消息:

    Console

    console.log
      slow

      at src/modules/tests/transformImage.spec.ts:45:17


  ●  Cannot log after tests are done. Did you forget to wait for something async in your test?
    Attempted to log "Successfully resized".

      19 |             let transform: sharp.Sharp = sharp();
      20 |             if (format === 'jpeg' || format === 'png') {
    > 21 |                 transform = transform.toFormat(format);
         |                                                                  ^
      22 |             }
      23 | 
      24 |             transform = transform

      at console.log (node_modules/@jest/console/build/BufferedConsole.js:197:10)
      at Sharp.<anonymous> (src/modules/transformImage.ts:21:66)
      at Object.<anonymous> (node_modules/sharp/lib/output.js:862:18)


  ●  Cannot log after tests are done. Did you forget to wait for something async in your test?
    Attempted to log "Successfully saved".

      12 |         setTimeout(() => {
      13 |             const readStream: fs.ReadStream = fs.createReadStream(inputPath);
    > 14 |             const writeStream: fs.WriteStream = fs.createWriteStream(outputPath);
         |                                                                  ^
      15 | 
      16 |             writeStream.on('error', () => console.log('Error'));
      17 |             writeStream.on('close', () => console.log('Successfully saved'));

      at console.log (node_modules/@jest/console/build/BufferedConsole.js:197:10)
      at WriteStream.<anonymous> (src/modules/transformImage.ts:14:66)

如何修改测试以获得结果'Successfully resized'

标签: typescriptunit-testingjestjs

解决方案


推荐阅读