在前一篇文章中介绍了Jasmine框架在Angular中的使用,而无法避开的另外一个部分就是Karma,这篇文章将继续通过demo应用来介绍Karma在Angular中的运用。
什么是Karma
Karma是一个对JavaScript代码执行提供多种浏览器运行环境的工具,前身是被2012年Google开源的Testacular,2013年被更名为Karma。
为什么以及何时使用Karma
当有如下需求时,则可以考虑使用Karma
- 希望在真实的浏览器中测试前端代码
- 希望在多平台、多浏览器中测试前端代码
- 希望在开发时本地能够进行前端测试
- 希望前端测试能够整合到持续集成实践中
- 希望每次文件的更新都会执行测试
- 希望使用instanbul自动化生成测试覆盖率报告
- 希望使用RequireJS
Karma vs Jasmine
Karma和Jasmine实际上并不具有可比性。Jasmine是前端的测试框架,与之类似的还有Mocha和Jasmine以及QUnit等。
Karma支持的浏览器
Karma支持主流的浏览器,包括
- Chrome and Chrome Canary
- Firefox
- Safari
- PhantomJS
- JSDOM
- Opera
- Internet Explorer
- SauceLabs
- BrowserStack
- …
配置Karma
使用karma init命令可以用交互方式设定Karma的配置文件。具体步骤与说明如下所示
- 步骤1: 全局安装karma
使用npm install -g karma即可安装Karma,安装和版本确认的执行命令与结果信息如下所示:
liumiaocn:~ liumiao$ npm install -g karma
/Users/liumiao/.nvm/versions/node/v10.15.3/bin/karma -> /Users/liumiao/.nvm/versions/node/v10.15.3/lib/node_modules/karma/bin/karma
+ karma@4.4.1
added 142 packages from 490 contributors in 6.874s
liumiaocn:~ liumiao$ karma --version
Karma version: 4.4.1
- 步骤2: 生成Karma配置文件
按照如下提示一步一步生成Karma的配置文件
liumiaocn:~ liumiao$ mkdir -p karmatest
liumiaocn:~ liumiao$ cd karmatest/
liumiaocn:karmatest liumiao$ ls
liumiaocn:karmatest liumiao$ karma init
Which testing framework do you want to use ?
Press tab to list possible options. Enter to move to the next question.
> jasmine
Do you want to use Require.js ?
This will add Require.js plugin.
Press tab to list possible options. Enter to move to the next question.
> no
Do you want to capture any browsers automatically ?
Press tab to list possible options. Enter empty string to move to the next question.
> Chrome
>
What is the locat