TypeScript自动化工作流程(下)

来源:互联网 发布:在淘宝买复合弓靠谱吗 编辑:程序博客网 时间:2024/05/16 19:21

自动化测试工具

自动化测试工具能够自动化地执行应用里的单元测试。

单元测试是指针对代码中的某个函数或某个部分(单元)进行的测试。通过单元测试,可以保证函数按照预期在工作。

通过使用自动化测试工具,可以自动在多个浏览器内执行应用的测试套件,而不必手动打开浏览器运行测试。

我们使用的自动化测试工具叫做KarmaKarma在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项目。使用十分方便。

  1. 使用Github账号登录Travis CI;
  2. 登录之后会自动同步Github项目,选择需要使用Travis CI的项目
  3. 在项目的根目录新增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

注意:建议在理解生成的代码之后再使用生成器!