TypeScript自动化工作流程(下)
来源:互联网 发布:在淘宝买复合弓靠谱吗 编辑:程序博客网 时间:2024/05/16 19:21
自动化测试工具
自动化测试工具能够自动化地执行应用里的单元测试。
单元测试是指针对代码中的某个函数或某个部分(单元)进行的测试。通过单元测试,可以保证函数按照预期在工作。
通过使用自动化测试工具,可以自动在多个浏览器内执行应用的测试套件,而不必手动打开浏览器运行测试。
我们使用的自动化测试工具叫做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
注意:建议在理解生成的代码之后再使用生成器!
- TypeScript自动化工作流程(下)
- TypeScript自动化工作流程(上)
- TypeScript自动化工作流程(中)
- Flash Builder 4工作流程(下)
- 前端工作流程自动化——Grunt/Gulp 自动化
- Android view 工作流程《下》
- 用Jmeter进行接口自动化测试工作流程
- 怎样在Automator中自动化任务并创建工作流程
- 怎样在Automator中自动化任务并创建工作流程
- TCP套接口通信工作流程(Linux下)
- AudioRecord工作流程(蓝牙a2dp的状态下)
- AudioRecord工作流程(蓝牙a2dp的状态下)
- WebStorm下使用TypeScript
- 讨论下Struts2工作流程问题
- Linux下svn的常用工作流程
- 戏说Android view 工作流程《下》
- 戏说Android view 工作流程《下》
- grunt搭建自动化前端环境(MAC下简单完整流程)
- 路由的使用流程
- RTT CPU使用率计算
- 我的心得
- 列表(无序列表、有序列表、自定义列表)
- servlet的生命周期
- TypeScript自动化工作流程(下)
- 算法---程序的灵魂,没错就是灵魂!
- Composer安装/镜像/常见命令/安装依赖/初始化/版本号
- 软考 递归式时间复杂度计算详解
- hdu 2087 剪花布条
- Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error:
- ACM准备之路(蓝桥杯3)
- 3用于MNIST的卷积神经网络-3.8使用10种不同的优化器训练模型,观察性能曲线
- ◆程序笔记◆◇第五期◇你好,NOIP