npm 包 jest-preset-angular 使用教程

简介

jest-preset-angular 是一款专门为 Angular 项目测试而设计的 jest 预置包,它包含了很多适用于 Angular 项目单元测试和集成测试的配置和工具,在使用 jest-preset-angular 可以提高测试的效率和可靠性。

本篇教程将会介绍 jest-preset-angular 的安装和配置,以及如何使用它进行单元测试和集成测试。读完本文您将掌握如下内容:

  • jest-preset-angular 的安装和配置
  • 常用的 jest-preset-angular 的配置
  • 使用 jest-preset-angular 进行 Angular 项目的单元测试和集成测试

安装和配置

首先需要在项目中安装 jest-preset-angular,可以通过 npm 在项目根目录运行以下命令安装:

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

接着在项目根目录创建 jest.config.js 配置文件,该文件是 jest 运行所必须使用的配置文件,具体配置如下:

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

上述配置中,preset 属性指定了使用的预置包,roots 属性指定了测试文件的根目录,testMatch 属性指定了符合测试文件的命名规则,setupFilesAfterEnv 属性指定了每个测试文件之前所需的一些操作,moduleNameMapper 属性指定了引入模块时的别名,transform 属性指定了需要 transform 的文件类型和使用的 transform 工具,coverageReporters 属性指定了覆盖率报告的输出方式。

常用的 jest-preset-angular 的配置

  • skipTestsFromCoverage:在代码覆盖率统计时是否忽略测试文件,默认是 true。
  • tsconfig:指定 ts-jest 使用的 tsconfig 配置文件,默认值是项目根目录下的 tsconfig.json
  • setupFilesAfterEnv:在运行每一个测试文件前所要执行的模块列表,它配置的模块将在 beforeEach 和 afterEach 之前执行,常用的模块有 angular-jest-setup.tsjest-zone-patch.ts
  • preset:指定使用的预置包。预置包会自动配置许多 jest 模块和插件,例如:jest-junit、jest-stare 等。

使用 jest-preset-angular 进行 Angular 项目的单元测试和集成测试

在项目单元测试和集成测试中,我们经常需要测试组件的输入输出,调用服务、路由、 HTTP 请求等。而粗略的测试可能会因为数据的不准确而导致测试结果的失准,进而引发项目的故障。

下面通过编写一个简单的组件来介绍 jest-preset-angular 的使用。

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

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

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

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

在这个组件中,它包含一个输入框和一个按钮,当用户输入一些新的信息时,点击 Add 按钮会向外发出 add 事件,我们可以用 @Output() 装饰器来定义这一事件,并在 onClick() 方法中来处理用户的输入并发出事件。

在进行测试之前,需要先创建一个新的测试用例文件 simple-form.component.spec.ts,其中包含如下内容:

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

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

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

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

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

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

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

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

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

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

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

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

首先,在 beforeEach 块中调用了 TestBed 的 configureTestingModule 方法,将 SimpleFormComponent 组件加入到测试模块中,以便我们测试它用于展示的组件。

其次,在 beforeEach 块中创建了 SimpleFormComponent 的实例 component,并对它所包含的每个子组件进行了初始化。在这里,我们可以通过 TestBed.createComponent 方法来创建组件的测试实例,然后对这个实例执行 fixture.detectChanges(),便会在这个组件中渲染出相应的 HTML 元素及组件实例。

接下来,使用 Jasmine 测试框架编写了两个测试用例:

  • 第一个测试用例,给输入框赋值,并点击按钮事件,测试组件能否正常发射 add 事件,这个用例称为一个成功的测试用例。
  • 第二个测试用例,不给输入框一个非空值,测试组件是否能够正确地发射 add 事件,这个用例称为一个失败的测试用例。

需要注意的是,由于 Angular 已经将表单文字绑定到组件实例的 message 属性中,因此我们只需要直接访问这个属性就可以获得当前的值。

总结

jest-preset-angular 是一款方便易用的 Angular 项目测试工具,它能够极大地提高测试效率和可靠性。本文介绍了 jest-preset-angular 的安装和配置、常用的配置项、以及如何通过一个简单的组件写单元测试和集成测试,希望能够给大家带来帮助。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/58295


猜你喜欢

  • npm包lazy使用教程

    简介 npm是node.js的包管理工具,许多前端工程师都在使用它来管理自己的编程包。而lazy则是一种npm包,可以让你的代码更加高效地运行,并缩短代码加载时间。

    6 年前
  • npm 包 nssocket 使用教程

    在前端领域,网络协议是非常重要的一环。nssocket 是一个 node.js 模块,它提供了与 TCP 和 TLS 协议相关的功能,是在客户端和服务器之间进行双向通信时的重要组成部分。

    6 年前
  • npm 包 pmx 使用教程

    在前端开发中,性能监控和调试是必不可少的部分。npm 包 pmx 可以帮助我们实现这些功能。本文将详细介绍 pmx 的使用教程,包括 pmx 的特性、安装和配置、常见应用场景以及示例代码。

    6 年前
  • npm 包 urlsafe-base64 使用教程

    什么是 urlsafe-base64? urlsafe-base64 是一个 npm 包,它可以将二进制数据编码成 Base64 字符串,并确保该字符串是 URL 安全的。

    6 年前
  • npm 包 http_ece 使用教程

    什么是 http_ece? http_ece 是一款基于 Web Cryptography API,用于在 HTTP 请求和响应之间进行端到端加密和解密的 npm 包。

    6 年前
  • npm 包 geckodriver 使用教程

    简介 geckodriver 是一个 Firefox WebDriver 的接口,与 Selenium 的 web 测试框架配合使用,可以用于自动化测试、端到端测试等,并支持多种编程语言。

    6 年前
  • npm 包 operadriver 使用教程

    介绍 Operadriver 是一个 Node.js 库,它可以启动 Opera 浏览器,并且将其作为 WebDriver 节点进行操作。 Webdriver 是一个用于自动化浏览器测试的协议,支持多...

    6 年前
  • npm 包 selenium-assistant 使用教程

    在现代 Web 开发中,自动化测试是不可或缺的一部分。Selenium 是一个广泛使用的自动化测试框架,它能够模拟用户的行为,从而达到测试网站功能和性能的目的。而 selenium-assistant...

    6 年前
  • npm 包 web-push 使用教程

    在 Web 开发中,推送信息给用户是一项非常实用和必要的功能。Web-Push 就是一种实现了这一功能的 npm 包,可以帮助开发者快速搭建推送服务。 本文将为大家介绍 Web-Push 的应用和使用...

    6 年前
  • npm 包 sqs-producer 使用教程

    前言 AWS SQS(Simple Queue Service)是一种高可用性、可扩展性和托管型消息队列服务。它可以让开发者在分离的组件之间轻松地发送、存储和接收消息,尤其适用于构建分布式应用和微服务...

    6 年前
  • NPM 包 sqs-consumer 使用教程

    简介 sqs-consumer 是一个用于处理 Amazon SQS(简单队列服务)消息的 Node.js 库。它使用 AWS SDK for JavaScript 来与 SQS 交互,并提供了简单易...

    6 年前
  • npm 包 try-to-tape 使用教程

    在前端的开发过程中,我们难免会遇到一些比较难以测试的情况。为了能够更好地完成测试,我们需要使用一些专业的工具。npm 包 try-to-tape 就是这样一款非常好用的工具,可以帮助我们快速地进行测试...

    6 年前
  • npm 包 pullout 使用教程

    在前端开发中,我们经常需要从大量的文本中提取特定的信息,这时候我们可以使用 npm 包 pullout,它是一个非常方便的文本提取工具。 安装 要使用 pullout,你需要先安装它。

    6 年前
  • npm 包 fs-copy-file-sync 使用教程

    前言 在前端开发过程中,我们常常需要将文件复制到不同的位置或者备份文件,NodeJS 提供了操作文件的 API,而 fs-copy-file-sync 可以从源文件复制文件到目标文件并返回复制后的目标...

    6 年前
  • npm 包 request-json 使用教程

    背景 在前端开发中,获取和处理数据是必需的。而与服务器端通信的方式之一就是通过 HTTP 协议发送请求和接收响应。对于请求的处理,我们可以手动拼接 URL、Header 和 Body,但这样会增加代码...

    6 年前
  • npm 包 mocha-appveyor-reporter 使用教程

    简介 Mocha 是一个基于 Node.js 平台的 JavaScript 测试框架,支持 BDD、TDD、QUnit 等多种测试风格,作为前端测试的重要工具之一,Mocha 在前端开发中有着广泛的应...

    6 年前
  • npm 包 python-shell 使用教程

    介绍 在前端开发中,我们会经常用到一些 Python 脚本,例如数据分析、机器学习等,这时候我们可以使用 python-shell 这个 npm 包来执行 Python 脚本并获取结果。

    6 年前
  • npm 包 cc 使用教程

    随着 Web 技术的不断发展,前端开发工作变得越来越重要。而 npm 是一个流行的 Node.js 包管理器,通过 npm,前端开发者可以方便地安装、更新、卸载依赖包。

    6 年前
  • npm 包 icc 使用教程

    简介 icc 是一个 npm 包,用于针对不同浏览器增加对应的 CSS 样式。由于不同的浏览器对于 CSS 的支持程度不同,因此使用 icc 可以让我们更轻松地开发跨浏览器的网站。

    6 年前
  • npm 包 exif-reader 使用教程

    在前端开发中,我们经常要操作图片,并且需要获取图片的一些基本信息。比如,图片的拍摄时间、尺寸、GPS 坐标等等。这些信息通常存在于图片的 Exif(Exchangeable Image File Fo...

    6 年前

相关推荐

    暂无文章