本文摘自PHP中文网,作者青灯夜游,侵删。

本文将探讨如何搭建测试环境、以及Angular测试工具集。
测试环境
绝大部分都是利用Angular Cli来创建项目,因此,默认已经集成我们所需要的npm包与脚本;当然,如果你是使用自建或官网 quickstart 的话,需要自行安装;但所有核心数据全都是一样的。【相关教程推荐:angular教程】
Angular单元测试我们可以将其分成两类:独立单独测试与Angular测试工具集。
Pipe与Service适为独立单独测试,因为它们只需要 new
实例类即可;同样是无法与Angular组件进行任何交互。
与之相反就是Angular测试工具集。
测试框架介绍
Jasmine
Jasmine测试框架提供了编写测试脚本的工具集,而且非常优秀的语义化,让测试代码看起来像是在读一段话。
Karma
有测试脚本,还需要Karma来帮忙管理这些脚本,以便于在浏览器中运行。
Npm 包
如果你非要折腾,那么最简单的办法便是通过Angular Cli创建一个新项目,然后将以下Npm包复制到您折腾的项目中。
1 2 3 4 5 6 7 8 |
|
那么,我们重要还是看配置脚本部分。
配置脚本
我们核心是需要让 karma 运行器运行起来,而对于 Jasmine,是在我们编写测试脚本时才会使用到,因此,暂时无须过度关心。
我们需要在根目录创建 karma.conf.js
文件,这相当于一些约定。文件是为了告知karma需要启用哪些插件、加载哪些测试脚本、需要哪些测试浏览器环境、测试报告通知方式、日志等等。
karma.conf.js
以下是Angular Cli默认提供的 karma 配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
|
以上配置基本上可以满足我们的需求;一般需要变动的,我想是测试浏览器列表了,因为karma支持所有市面上的浏览器。另外,当你使用 Travis CI 持续集成时,启动一个禁用沙箱环境Chrome浏览器会让我们少了很多事:
1 2 3 4 5 6 |
|
有关karma config文件的所有信息,请参与官网文档。
test.ts
在编写 karma.conf.js
时,我们配置过浏览器加载的文件指向的是 ./src/test.ts
文件。作用是为了引导 karma 启动,代码也简单许多:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
一切就绪后,我们可以尝试启动 karma 试一下,哪怕无任何测试代码,也是可以运行的。
如果是Angular Cli那么 ng test
。折腾的用 node "./node_modules/karma-cli/bin/karma" start
最后,打开浏览器:http://localhost:9876
,可以查看测试报告。
简单示例
既然环境搭好,那么我们来写个简单示例试一下。
创建 ./src/demo.spec.ts
文件。.spec.ts为后缀这是一个约定,遵守它。
1 2 3 4 5 |
|
运行 ng test
后,我们可以在控制台看到:
1 |
|
或者浏览器:
1 2 3 |
|
不管怎么样,毕竟我们已经进入Angular单元测试的世界了。
Angular测试工具集
普通类诸如Pipe或Service,只需要通过简单的 new
创建实例。而对于指令、组件而言,需要一定的环境。这是因为Angular的模块概念,要想组件能运行,首先得有一个 @NgModule
定义。
工具集的信息量并不很多,你很容易可以掌握它。下面我简略说明几个最常用的:
TestBed
TestBed
就是Angular测试工具集提供的用于构建一个 @NgModule
测试环境模块。当然有了模块,还需要利用 TestBed.createComponent
创建一个用于测试目标组件的测试组件。
异步
Angular到处都是异步,而异步测试可以利用工具集中 async
、fakeAsync
编写优雅测试代码看着是同步。
工具集还有更多,这一切我们将在[Angular单元测试-组件与指令单元测试]()逐一说明。
happy coding!
以上就是如何搭建测试环境?Angular测试工具集介绍的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
浅谈Angular cli工具如何从零搭建并运行一个简单项目
2021年值得尝试的7个Angular前端组件库,快来收藏吧!
更多相关阅读请进入《Angular》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者