gpt4 book ai didi

javascript - 测试异步函数的问题

转载 作者:行者123 更新时间:2023-11-30 14:46:01 26 4
gpt4 key购买 nike

我偶然发现了测试异步代码的问题。

这是我的函数的代码:

export default base64String =>
new Promise((resolve, reject) => {
const image = new Image();

image.onload = () => {
const dimensions = {
width: image.width,
height: image.height,
};

resolve(dimensions);
};
image.onerror = err => reject(err);

image.src = base64String;
});

它接受一个base64编码的字符串并返回图像的宽度和高度;

测试看起来如下:

import checkBase64 from '../src/helpers/check-base64';

import base64String from './base64String';

test('should return width and height of an image in base64', async () => {
const result = await checkBase64(base64String);
});

问题是测试失败并出现错误:

Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

我正在关注 jest docssome stack overflow questions但他们都没有帮助

最佳答案

Image 构造函数只存在于 DOM 中,Jest 测试在 Node 中运行。看起来从 checkBase64 函数返回的 promise 在尝试访问 Image 时无提示地失败了。您需要模拟它,要么使用最小的东西 (global.Image = ...),要么使用像 jsdom 这样功能齐全的东西。 .

关于javascript - 测试异步函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48928835/

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