我正在努力掌握如何使用Nestjs进行良好的测试。
因此,我正在阅读文档[https://docs.nestjs.com/fundamentals/testing#testing-实用程序],但有一个我不完全理解的摘录:
Test类用于提供一个应用程序执行上下文,该上下文本质上模拟整个Nest运行时,但它为您提供了钩子,使您可以轻松管理类实例,包括模拟和重写。
在这种情况下,钩子是什么?
在这种情况下,有两个主要的钩子通常被引用:
-
Test.createTestingModule().compile()
命令。这使我们能够以最小的工作量设置一个测试模块,这样我们就可以只传递我们想要测试的类所需的元数据。不必向imports
添加模块,我们可以将服务与自定义提供程序一起传递给providers
,以模拟该服务的依赖关系。这使得单元测试更加容易(在我看来(。这也使得不必调用new MyService(new MockDep1(), new MockDep2(), ...new MockDepN())
成为可能,Nest仍将为我们管理它,就像它一直在做的那样。 -
TestingModule
还有一些有用的可链接方法,如overridePrivoder
、overrideGuard
、overrideInterceptor
、overridePipe
和overrideFilter
。这些允许我们覆盖已经在模块上下文中设置的提供者和增强器(例如,如果我们使用导入进行e2e测试(