NestJs-如何对DTO进行单元测试?

时间:2020-03-25 15:39:34

标签: javascript node.js nestjs

我正在寻求您的帮助。我创建了一个看起来像它的DTO(这是一个较小的版本):

export class OfImportDto {

    @IsString({
        message: "should be a valid product code"
    })
    productCode: string;

    @IsString({
        message: "Enter the proper product description"
    })
    productDescription: string;

    @IsDateString({
        message: "should be a valid date format, for example : 2017-06-07T14:34:08+04:00"
    })
    manufacturingDate : Date

    @IsInt({
        message: "should be a valid planned quantity number"
    })
    @IsPositive()
    plannedQuantity: number;

问题是我要用单元测试而不是E2E测试来测试它。而且我不知道该怎么做。例如,我想进行单元测试 1 /如果我的产品代码是字符串,则应创建一个字符串,否则,将抛出异常 2 /如果我的产品描述很好,应该创建一个字符串,否则,抛出异常 ... 等等。

那么,我可以制作一个spec.ts文件进行测试吗?如果是,怎么办? 如果不是,最好在service.spec.ts中对其进行测试?如果可以,怎么办?

非常感谢您,任何帮助都将非常有帮助:)

1 个答案:

答案 0 :(得分:1)

可以创建一个OfImportDTO.spec.ts文件(或任何原始文件称为),但事实是,这里没有任何逻辑可以测试。您最能做的是从Validator创建一个class-validator的实例,然后实例化OfImportDto的实例,然后检查该类是否通过验证。如果您向其中添加逻辑(例如具有特定功能的getter和setter),则对于单元测试可能是有意义的,但是否则,这基本上是一个称为类的接口,因此它在运行时存在于class-validator