为dto编写用于定制验证程序的单元测试

问题描述

根据我的理解,我认为装饰器应该进行e2e测试,而不是单元测试。但是我创建了一个自定义的装饰器。该方案与电话号码有关。根据加载的环境,仅基于有限数量的电话号码的提供者可以接受。我结束了以下内容:

import { registerDecorator,ValidationOptions,ValidationArguments } from 'class-validator';
import { settings } from "../config/settings";
export function IsValidPhoneNumber(property: string,validationOptions?: ValidationOptions) {
  return function (object: Object,propertyName: string) {
    registerDecorator({
      name: 'isValidPhoneNumber',target: object.constructor,propertyName: propertyName,constraints: [property],options: validationOptions ? validationOptions : { message : "invalidPhoneNumber"},validator: {
        validate(value: any,args: ValidationArguments) {
          let allowedPhoneProvider = false;
          if (phoneIsValidBasedOnEnv){
               allowedPhoneProvider = true
          }
          return typeof value === 'string' && allowedPhoneProvider;
        },},});
  };
}

现在进入我的dto:

import { IsValidPhoneNumber } from "./phone-validator";
export class BookDto {

    @IsNotEmpty()
    @IsValidPhoneNumber('phone')
    phone : string;
}

现在我在为IsValidPhoneNumber()编写测试中迷路了。我有以下内容:

import { IsValidPhoneNumber } from './phone-validator';


describe("Validators",() =>{
    it("should return true for valid numbers",() =>{
        const b = IsValidPhoneNumber("phone");
        
        console.log(b({"phoone":"098548000","phone"});

     })
})

我阅读了以下有关使用工厂测试装饰器的信息,但args始终未定义。

import { ROUTE_ARGS_METADATA } from '@nestjs/common/constants';

function getParamDecoratorFactory(decorator: Function) {
    class Test {
      public test(@decorator() value) { }
    }
  
    const args = Reflect.getMetadata(ROUTE_ARGS_METADATA,Test,'test');
    // args is undefined
   
    return args[Object.keys(args)[0]].factory;
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...