什么是测试 Nestjs 框架上下文中的钩子?

What is a hook in the testing Nestjs framework context?

我正在努力掌握如何使用 Nestjs 进行良好的测试。

因此我正在阅读文档 [https://docs.nestjs.com/fundamentals/testing#testing-utilities],但是有一段我不完全理解的摘录:

The Test class is useful for providing an application execution context that essentially mocks the full Nest runtime, but gives you hooks that make it easy to manage class instances, including mocking and overriding.

在这种情况下什么是钩子?

在这种情况下,有两个主要的钩子被普遍引用:

  1. Test.createTestingModule().compile()命令。这使我们能够以最小的努力设置测试模块,这样我们就可以只传入我们要测试的 class 所需的元数据。不必向 imports 添加模块,我们可以将服务与自定义提供程序一起传递给 providers 以模拟该服务的依赖项。这使得单元测试更容易(在我看来)。这也使得不必调用 new MyService(new MockDep1(), new MockDep2(), ...new MockDepN()) 成为可能,Nest 仍会像过去一样为我们管理它。

  2. TestingModule 还有一些有用的可链接方法,如 overridePrivoderoverrideGuardoverrideInterceptoroverridePipeoverrideFilter。这些允许我们覆盖已经在模块上下文中设置的提供程序和增强器(例如,如果我们使用导入进行 e2e 测试)