最近的一个项目使用AngularJS(v1.2.6)作为前端的框架,《Angular使用笔记》系列用于记录过程中的一些使用和解决方法。
本文记录Angular中会使用到Karma的一些配置项。
Karma基本配置
karma.conf.js
这里我们先直接查看yaomen工程生成的配置文件:
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| module.exports = function(config) { 'use strict'; config.set({ autoWatch: true, basePath: '../', frameworks: [ 'jasmine' ], files: [ 'app/bower_components/angular/angular.js', 'app/bower_components/angular-mocks/angular-mocks.js', 'app/scripts/*.js', 'app/scripts/**/*.js', 'test/spec/**/*.js', 'app/bower_components/angular-resource/angular-resource.js', 'app/bower_components/angular-cookies/angular-cookies.js', 'app/bower_components/angular-sanitize/angular-sanitize.js', 'app/bower_components/angular-route/angular-route.js' ], exclude: [ ], port: 8080, browsers: [ 'PhantomJS' ], plugins: [ 'karma-phantomjs-launcher', 'karma-jasmine' ], singleRun: false, colors: true, logLevel: config.LOG_INFO, }); };
|
完善Angular单元测试
优化测试报告
上一节我们已经简单说过控制器的单元测试了,运行结果如下:
这样的结果显示并不是很清晰,我们下面将使用mocha的测试报告,这里使用插件karma-mocha-reporter。
1
| npm install karma-mocha-reporter --save-dev
|
- karma.conf.js配置
我们需要在karma配置文件中添加相关的配置:
1 2 3 4 5 6 7 8 9
| reporters: ['mocha'], plugins: [ 'karma-phantomjs-launcher', 'karma-jasmine', 'karma-mocha-reporter' ],
|
现在运行我们的测试,可以看到测试结果如下:
这样的测试报告会比之前的清晰多了呢。
测试覆盖率
karma的插件karma-coverage提供了测试代码覆盖率的支持。
1
| npm install karma karma-coverage --save-dev
|
- karma.conf.js配置
我们需要在karma配置文件中添加相关的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| reporters: ['mocha', 'coverage'], preprocessors: { 'app/scripts/*.js': ['coverage'], 'app/scripts/**/*.js': ['coverage'] }, coverageReporter: { type : 'html', dir : 'test/coverage/' }, plugins: [ 'karma-coverage', 'karma-phantomjs-launcher', 'karma-jasmine', 'karma-mocha-reporter' ],
|
运行grunt test
进行测试之后,会自动生成代码覆盖率测试报告:
生成的目录如下:
添加Chrome浏览器测试
如果需要增加对不同浏览器的测试,需要按照对应的插件,以及进行一些配置。
这里我们介绍一下添加Chrome浏览器测试的步骤,这里使用karma-chrome-launcher。
1
| npm install karma-chrome-launcher --save-dev
|
- karma.conf.js配置
我们需要在karma配置文件中添加相关的配置:
1 2 3 4 5 6 7 8 9 10 11 12
| browsers: [ 'PhantomJS', 'Chrome' ], plugins: [ 'karma-phantomjs-launcher', 'karma-chrome-launcher', 'karma-jasmine', 'karma-mocha-reporter' ],
|
测试中,chrome浏览器会自动打开并运行测试,完毕之后自动关闭。我们可以看到coverage中也新增了Chrome的测试覆盖率报告。
结束语
这里我们介绍了一些Karma相关的配置,karma.conf.js这个文件也需要耐心折腾呢。不过对核心代码进行单元测试的确是个不错的选择,这样我们就能放心去优化代码,知道产品的功能是否受损了呢。
此处查看项目代码(仅包含test部分)
查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢