javascript - 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 中测试它吗?如果是这样,怎么做?
非常感谢,任何帮助都会非常有帮助:)
解决方案
可以创建一个OfImportDTO.spec.ts
文件(或任何您的原始文件),但问题是,这里没有任何逻辑可以测试。您可以做的最接近的事情是创建一个Validator
fromclass-validator
的实例,然后实例化一个 the 的实例,OfImportDto
然后检查该类是否通过了验证。如果您向它添加逻辑(例如,具有特定功能的 getter 和 setter),那么它对于单元测试可能是有意义的,但除此之外,这基本上是一个被称为类的接口,因此它存在于运行时class-validator
推荐阅读
- c++ - Lua C API - 从 C++ 分配和使用类的对象成员
- react-native - React-Native 在图像中使用状态需要
- asp.net-core - .NET Core 身份作为 UI 显示登录页面(如果未登录)
- firebase - 如何在颤动的 Firestore 中检查集合是否存在?
- c++ - 试图从txt文件中读取两条数据并输出[C++]
- jquery - 如何将工具提示添加到特定的 jsTree 节点
- c++ - 使用 make 将目标文件放在特定目录中
- html - 选择选项中的HTML
- c++ - 在 tensorflow-gpu>=1.15 中使用用户运算符时未定义的符号
- regex - 如果 word_B 和 word_C 在彼此的 N 个单词中,并且 word_A 不在前面的 M 个单词中,则正则表达式匹配