TypeScript自动化工作流程(下)
自动化测试工具
自动化测试工具能够自动化地执行应用里的单元测试。
单元测试是指针对代码中的某个函数或某个部分(单元)进行的测试。通过单元测试,可以保证函数按照预期在工作。
通过使用自动化测试工具,可以自动在多个浏览器内执行应用的测试套件,而不必手动打开浏览器运行测试。
我们使用的自动化测试工具叫做Karma。Karma在Angular2中也有被使用到。
Karma可以和多个流行的单元测试框架兼容。测试框架我们选择Mocha,同时我们还会联通另外两个库一同使用Chai(一个断言库)、Sinon(一个数据模拟框架)。
- 安装测试框架
cnpm install mocha chai sinon --save-dev
- 安装自动化测试工具
cnpm install karma karma-mocha karma-chai karma-sinon karma-coverage karma-phantomjs-launcher gulp-karma --save-dev
karma-coverage可以衡量测试脚本的质量,脚本质量的一个参考指标就是代码覆盖率(coverage)。
karma-phantomjs-launcher是一个基于webkit内核的无头浏览器,即没有UI界面,即它就是一个浏览器,只是其内的点击、翻页等人为相关操作需要程序设计实现。
- 应用单元测试
var karma=require('gulp-karma');
gulp.task('karma', function(cb) {
gulp.src('./dist/test/**/**.test.js')
.pipe(karma({
configFile: 'karma.conf.js',
action: 'run'
}))
.on('end', cb)
.on('error', function(err) {
// 确保测试失败之后,让gulp以非0的状态码退出
throw err;
});
});
我们将获取./dist/test/及其子目录下所有扩展名为.test.js的文件,然后把他们连同karma.conf.js(包含karma配置信息)文件一同传递给karma插件。
在根目录下创建karma.conf.js,其内容下:
module.exports = function (config) {
'use strict';
config.set({
basePath: '',
frameworks: ['mocha', 'chai', 'sinon'],
browsers: ['PhantomJS'],
reporters: ['progress', 'coverage'],
plugins : [
'karma-coverage',
'karma-mocha',
'karma-chai',
'karma-sinon',
'karma-phantomjs-launcher'
],
preprocessors: {
'./dist/test/*.test.js' : ['coverage']
},
port: 9876,
colors: true,
autoWatch: false,
singleRun: false,
logLevel: config.LOG_INFO
});
};
这个配置文件告诉了karma应用的根目录、框架(Mocha、Chai和Sinon.js)、浏览器(PhantomJS)、插件和需要报告的测试执行期间的信息。PhantomJS是一个无界面的web浏览器,使用它就无须打开一个真正的Web浏览器,而可以执行单元测试代码。
关于配置karma更多的信息,你可以访问我翻译的文章Karma中文配置API,也可以访问英文原文地址。
持续集成工具(CI)
持续集成工具(CI)是一种帮助我们避免潜在的代码集成问题的开发实践。
在多人开发时,我们往往需要把多个不同人开发的子系统进行合并。这些经过测试的代码合并在一起,往往会出现软件集成方面的问题。持续集成要求开发者每天都向远程代码仓库提交代码,每次提交代码,系统都会自动构建,这将使得集成问题会尽早被团队发现,这就是持续集成工具的意义。
Travis CI是国外新兴的开源持续集成构建项目,支持Github项目。使用十分方便。
- 使用Github账号登录Travis CI;
- 登录之后会自动同步Github项目,选择需要使用Travis CI的项目
- 在项目的根目录新增
travis.yml文件,内容如下:
#指定运行环境
language: node_js
#指定nodejs版本,可以指定多个
node_js:
- 0.12.5
#运行的脚本命令
script:
- npm run ci
#指定分支,只有指定的分支提交时才会运行脚本
branches:
only:
- master
更多语法请看这里。使用起来非常方便,这样当你每次向github push代码的时候,Travis CI就会自动运行travis.yml里面的script。自动进行编译以及运行单元测试。
由于Travis CI每次build之前都会运行npm install安装项目依赖的npm包,所以在提交代码的时候要保证把所有依赖的包都已经在package.json中声明了,否则build就会失败。
脚手架工具
脚手架工具可以用来自动生成项目的文件结构、构建脚本等等。目前最流行的工具是Yeoman。yeoman使用的内建命令为yo,同时它自己也是一个包管理工具和自动化任务工具,它基于模板生成项目。
生成项目的模板在yeoman中被称为生成器。在开源社区中,人们已经发布了许许多多的生成器。我们可以去找符合项目要求的生成器。当然我么也可以自己写。
yo命令可以通过npm安装:
npm install -g yo
我们可以根据项目的需求,找一个合适的生成器。所有的生成器都可以在 http://yeoman.io/generators/ 中找到。
安装一个关于ts的生成器。
npm install -g generator-typescript
使用它
yo typescript
注意:建议在理解生成的代码之后再使用生成器!
更多推荐



所有评论(0)