javascript - 如何在一个测试使用异步等待的同一个 yup 字段上执行两个测试
问题描述
验证适用于 required 和 imageHeight,但不适用于 fileFormat。我正在使用异步等待来等待图像加载并返回确切的高度。
支持的格式数组
const SUPPORTED_FORMATS = [
"image/jpg",
"image/jpeg",
"image/png",
];
获取图像高度的函数
const getImageHeight = (value) => {
return new Promise((resolve, reject) => {
let img = new Image();
img.onload = () => resolve(img.height);
img.onerror = reject;
img.src = value?.data || value;
});
};
是的验证
export const ImageValidate = Yup.object({
image: Yup.mixed()
.required("Please select image")
.test("fileFormat", "Unsupported Format", (value) => {
return SUPPORTED_FORMATS.some((type) =>
type === value?.file?.type
);
})
.test(
"imageHeight",
"image height should be >=100",
async (value) => {
if (value) {
const dimension = await getImageHeight(value);
if (dimension.height >=100) {
return true;
}
return false;
}
return false;
}
),
});
解决方案
推荐阅读
- entity-relationship - Adonis-Js:获取与另一个实体相关的特定数量的实体
- alibaba-cloud - 阿里巴巴云,如何通过api获取包括价格在内的使用详情
- android - 如何使用 mockito 在单元测试中初始化库
- vb.net - (VB.NET) System.IO.IOException:进程无法访问文件
- python - 如何在 datetime python 中更改时间并添加循环
- mysql - 3 个连接表中的 SQL 数学函数
- kotlin - 是否可以为 Kotlin 覆盖 ENUM 的名称?
- c++17 - 大批
向量 VS2019 上的 range v3 风格 - python - 字典中的 Python 条件键/值
- c++ - 负回文数失败