使用 Jest 测试 Nest.js 应用的方法

在开发应用时,编写测试是非常重要的一部分。它可以帮助我们在发布应用之前找到和解决潜在的问题,提高我们应用的质量和可靠性。在本文中,我们将讨论如何使用 Jest 测试 Nest.js 应用程序。

什么是 Jest?

Jest 是一个基于 JavaScript 的测试框架,由 Facebook 开发并维护。它被设计用于测试 React 应用程序,但也可以用于测试其他 JavaScript 应用程序,包括 Nest.js 应用程序。它被广泛使用,具有以下优点:

  • 简单且易于使用
  • 快速运行测试
  • 优雅的输出结果
  • 容易扩展

准备工作

在我们开始编写测试之前,我们需要安装 Jest 库。我们可以使用以下命令来安装 Jest:

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

我们还需要在 package.json 文件中添加 Jest 测试命令:

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

编写测试

我们可以在 Nest.js 应用程序中创建一个名为 example.service.ts 的示例服务。然后,我们将通过编写测试来测试该服务。

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

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

现在我们将创建一个名为 example.service.spec.ts 的测试文件,对 example.service.ts 文件进行测试。

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

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

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

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

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

在测试文件中,我们使用 Jest 的 describeit 函数来声明测试用例。我们可以通过 beforeEach 函数来创建测试环境,并从测试模块中获取 ExampleService 实例。在 getValue 函数的测试中,我们使用 expect 函数来测试应用程序是否返回预期的结果。

现在我们可以运行测试用例,执行以下命令:

--- ----

Jest 将打印测试结果:

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

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

使用模拟对象

在测试应用程序时,如果依赖于其他模块或服务,我们可以使用模拟对象来模拟这些依赖项。我们可以使用 Nest.js 的 mock 函数来创建模拟对象。

例如,如果我们的 ExampleService 依赖于 ConfigService,我们可以在测试中创建 ConfigService 的模拟对象,以便我们可以控制其行为:

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

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

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

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

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

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

在上面的测试代码中,我们首先创建 ConfigService 的模拟对象,并使用 useValue 属性将其注入到测试模块中。然后,在测试用例中,我们使用 jest.spyOn 函数来模拟 ConfigService 对象中的 get 函数。最后,我们使用 expect 函数来测试应用程序是否返回预期的结果。

结论

测试是应用程序开发过程中必不可少的一部分。在本文中,我们介绍了如何使用 Jest 测试 Nest.js 应用程序,并且讨论了如何使用模拟对象来测试依赖项。使用这些技术,我们可以编写高质量的测试,确保我们的应用程序是可靠的。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6708f3e4d91dce0dc8757004