npm 包 @nestjs/testing 使用教程

阅读时长 6 分钟读完

介绍

NestJS 是一款基于 Node.js 的开源框架,它可以帮助我们更方便地创建可扩展的、模块化的、易于维护的 Web 应用程序。@nestjs/testing 是 NestJS 框架提供的一个 npm 包,它可以帮助我们方便地进行单元测试。

安装

在开始使用 @nestjs/testing 之前,我们需要先安装它。可以使用 npm 命令进行安装:

安装完成后,我们就可以在我们的项目中使用 @nestjs/testing 提供的各种测试工具进行单元测试了。

常用工具

在 @nestjs/testing 包中,提供了很多实用的工具类用来进行单元测试:

  • TestingModule:使用测试模块初始化 Nest 应用程序。
  • Test:定义测试套件的属性。
  • TestingModuleBuilder:构建一个测试模块用于初始化 Nest 应用程序。
  • MockedService:模拟服务以供测试使用。
  • TestingLogger:模拟 Logger 以供测试使用。
  • ClientProxyTestingModule:提供测试用的客户端代理。

TestingModule 的使用

TestingModule 可以帮助我们方便地初始化一个 Nest 应用程序。在测试文件中,我们可以按照下面的方式使用这个模块:

-- -------------------- ---- -------
------ - ----- ------------- - ---- ------------------
------ - ------------- - ---- -------------------
------ - ---------- - ---- ----------------

------------------------- -- -- -
  --- -------------- --------------

  ---------------- -- -- -
    ----- ---- ------------- - ----- --------------------------
      ------------ ----------------
      ---------- -------------
    -------------

    ------------- - --------------------------------------
  ---

  ---------------- -- -- -
    ---------- ------ ------ --------- -- -- -
      -------------------------------------------- ---------
    ---
  ---
---
展开代码

在上面的例子中,我们首先使用 Test.createTestingModule() 方法创建一个测试模块,然后将所需的控制器和服务提供者加入到该测试模块中。compile() 方法会将这个测试模块编译成一个可以使用的应用程序实例。

在 beforeEach() 方法中,我们通过 app.get<appcontroller>(AppController) 获取了应用程序实例中的 AppController,用于后面的单元测试。

MockedService 的使用

MockedService 可以帮助我们方便地模拟服务以供测试使用。下面是一个例子:

-- -------------------- ---- -------
------ - ----- ------------- - ---- ------------------
------ - ---------- - ---- ----------------

---------------------- -- -- -
  --- -------- -----------

  ---------------- -- -- -
    ----- ------- ------------- - ----- --------------------------
      ---------- -
        -----------
        -
          -------- ----------------
          --------- -
            ---- -- -- ----- -------
          --
        --
      --
    -------------

    ------- - -----------------------------------
  ---

  ---------- ------ ---- ------- -- -- -
    ----------------------------------------- --------
  ---
---
展开代码

在上面的例子中,我们使用了 MockedService 来模拟了一个叫做 ConfigService 的服务,使其返回了一个字符串 test value。

TestingLogger 的使用

TestingLogger 可以帮助我们方便地模拟 Logger 以供测试使用。下面是一个例子:

-- -------------------- ---- -------
------ - ----- ------------- - ---- ------------------
------ - ---------- - ---- ----------------
------ - ------------- - ---- ------------------

---------------------- -- -- -
  --- -------- -----------
  --- ------- --------------

  ---------------- -- -- -
    ----- ------- ------------- - ----- --------------------------
      ---------- ------------ ---------------
    -------------

    ------- - -----------------------------------
    ------ - -----------------------------------------
  ---

  ---------- ------ ------ --------- -- -- -
    -------------------------------------- ---------
    --------------------------------------------
  ---
---
展开代码

在上面的例子中,我们使用了 TestingLogger 用来模拟 logger 对象。在单元测试中,我们可以随时使用 logger.getMessages() 方法来获取 logger 的所有输出,并进行断言。

总结

通过学习 @nestjs/testing 的使用教程,我们可以发现它提供了很多实用的工具,并且能够非常方便地帮助我们进行单元测试。熟悉了这些工具的使用,对于我们开发者来说是非常有用的。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/118376