我试图使用类验证器模块来确认我的对象在使用Map器代码时是有效的。
order.entity.ts
import {
ArrayMinSize,
IsArray,
IsBoolean,
IsDate,
IsDateString,
IsInt,
IsOptional,
IsString,
ValidateNested,
} from 'class-validator';
import { Transform, Type } from 'class-transformer';
export class Order {
@IsInt()
@IsOptional()
OrderId?: number;
@IsString()
@IsOptional()
RetailerName?: string | null;
@IsString()
RetailerOrderId: string;
@IsString()
@IsOptional()
Brand?: string | null;
}
我有一个mapper设置如下:data.mapper.ts
import { Order } from './entities/Order.entity';
import { transformAndValidate } from 'class-transformer-validator';
export class OrderMapper {
public static async toDomainFromMessage(raw: any): Promise<Order> {
const order = new Order();
order.RetailerName =
raw.source ??
(() => {
new Error('Retailer Name is missing');
})();
order.RetailerOrderId = raw.externalOrderId
? raw.externalOrderId.toString()
: null;
const result = await transformAndValidate(Order, order)
.then((orderObject: Order) => {
return orderObject;
})
.catch((err) => {
throw err;
});
return result;
}
}
我通过传入这样的对象进行测试
const order = {
orderId: 12345678,
shipping_country_code: 'US',
orderTypes: [
{
orderTypeLabel: 'Wholesale',
orderTypeId: '14',
},
],
};
由于缺少ExternalOrder字段,因此它会抛出ValidationError类型的错误数组。
我已经尝试使用此代码捕获错误,但无法确定需要使用什么expect命令来验证捕获的错误变量中是否有一些ValidationError对象
try {
const order = await OrderMapper.toDomainFromMessage(order);
} catch (e) {
console.log(e);
}
1条答案
按热度按时间ulmd4ohb1#
您可以将Jest
expect
函数与自定义匹配器一起使用,以验证捕获的错误是否是class-validator
模块中ValidationError
类的示例,以及它是否包含预期数量的错误。将此代码添加到catch块下。