使用 Jest 测试 Angular 应用的实践

使用 Jest 测试 Angular 应用的实践

随着前端技术的发展,我们经常需要使用测试工具来确保我们的代码能够正确地工作。Jest 是一个流行的 JavaScript 测试框架,它简单易用且功能强大。在本文中,我们将会学习如何使用 Jest 测试 Angular 应用。

准备工作

在开始之前,我们需要先安装 Jest。打开终端,运行以下命令:

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

这将会安装 Jest、Jest 的类型定义以及 TypeScript 支持插件 ts-jest。

接着,我们需要在 package.json 文件中添加以下配置:

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

这些配置将会告诉 Jest 使用 jest-preset-angular 预设以及在每个测试文件运行前执行 setup-jest.ts 文件。它们还会告诉 Jest 忽略某些文件和转换某些文件。

接下来,我们需要创建 src/setup-jest.ts 文件。

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

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

这个文件将会设置一些 Jest 用得到的全局变量。

测试组件

现在我们已经准备好了开始测试 Angular 应用了。让我们创建一个简单的组件。

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

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

它会显示一个标题为“Hello, world!”的组件。

我们现在需要编写一个测试,确保组件能够正确地渲染。创建 app.component.spec.ts 文件,编写以下代码:

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

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

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

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

这个测试有两个部分。

第一个部分是测试是否能够创建这个组件。我们使用 TestBed 声明组件,创建一个它的实例并检查是否创建成功。

第二个部分是检查组件是否渲染成正确的 HTML 元素。我们使用 fixture.detectChanges() 方法更新视图并查找组件的 HTML 元素,确保他们被正确地渲染。

运行测试

现在我们已经编写完了测试代码,可以运行它们了。

在终端输入以下命令:

--- --- ----

这会启动 Jest 并运行 *.spec.ts 文件。

如果一切正常,你会看到输出如下:

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

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

因为我们的测试很简单,所以输出非常短。

结论

现在你已经知道了如何使用 Jest 测试 Angular 应用了。我们可以使用类似的方法测试组件、指令、管道、服务和路由器。这些测试可以在开发时识别问题,保证应用的质量和可靠性。

最后,以下是完整的示例代码。

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

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

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

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

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

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