如何对Nest Interceptor进行单元测试

时间:2020-02-12 21:37:13

标签: typescript nestjs

我正在寻找关于Nestjs中的拦截器进行单元测试的一些见解,请对我对单元测试的了解还不够,因为我对它们还是很陌生,所以请随时解释似乎更确切的概念琐碎,尽管如此我还是会感激的!

仅出于这个问题,我将从Nestjs文档中借用代码,尤其是LoggingInterceptor,因为这是我在项目中实现的代码。

这是官方文档中的日志拦截器。

import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';

@Injectable()
export class LoggingInterceptor implements NestInterceptor {
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    console.log('Before...');

    const now = Date.now();
    return next
      .handle()
      .pipe(
        tap(() => console.log(`After... ${Date.now() - now}ms`)),
      );
  }
}

在设置一个简单的单元测试中,我多次尝试并失败了,该测试仅显示两次调用console.log,一次调用next,之后调用一次。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式轻松为记录器拦截器创建单元测试:

const headers = Array.from(output.querySelectorAll('.card-heading'))
dataSet.forEach((p, index) => headers[index].appendChild(p.svg))