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

标签 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 中测试它吗?如果是这样,怎么做?

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

最佳答案

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

关于javascript - NestJs - 如何对 DTO 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60852170/

相关文章:

node.js - 使用 node.js amqp 模块时如何将 AQMP 消息缓冲区转换为 JSON 对象?

node.js - NestJS 返回 HTTP 请求的结果

cors - 在 NestJs 中启用 Cors

操作的 Javascript 字符串验证

javascript - 如何配置 API 端点以从 ember-uploader 组件接收文件

node.js - 使用 Grunt-babelify-browserify 而不导入 Node 模块

multithreading - 如何在 Node.js 应用程序中使用 Apache OpenNLP

javascript - jQuery:通过键名计算多维数组

javascript - JQuery Cookie.js 保存 cookie

javascript - 找不到 nest 命令