首页 > 解决方案 > NestJs - 如何对 DTO 进行单元测试?

问题描述

我在向你寻求帮助。我创建了一个看起来像它的 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 中测试它吗?如果是这样,怎么做?

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

标签: javascriptnode.jsnestjs

解决方案


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


推荐阅读