首页 > 解决方案 > 我如何测试这个装饰器?

问题描述

这基本上是代码的模型。我尝试了一些东西,但我在测试方面是新手,所以这些线路没有被覆盖。

所以,我不知道如何访问和测试来自 createParamDecorator() 的内容。或者我如何测试标头、dto 和所有内容。我试图模拟 de ExecutionContext 值和 switchToHttp() 并将所有内容都返回 null 并通过测试。但线路没有被覆盖。

import { plainToClass } from 'class-transformer';
// The import below fails
import { ClassType } from 'class-transformer/ClassTransformer';
import { validateOrReject } from 'class-validator';

export const RequestHeader = createParamDecorator(
  async (value:  any, ctx: ExecutionContext) => {

    // extract headers
    const headers = ctx.switchToHttp().getRequest().headers;

    // Convert headers to DTO object
    const dto = plainToClass(value, headers, { excludeExtraneousValues: true });
    
    // Validate 
    await validateOrReject(dto);

    // return header dto object 
    return dto;
  },
);

标签: node.jstypescriptunit-testingjestjs

解决方案


推荐阅读