前端自动化测试 —— TDD环境配置(React+TypeScript)
欢迎讨论与指导:)
前言
TDD —— Test-Drive Development是测试驱动开发的意思,是敏捷开发中的一项核心实践和技术,也是一种测试方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码 —— 引自百度百科。
在开发时,希望能够改动项目代码或者测试代码时能够自动进行测试,并停止上一次的测试(如果有的话)。因此基本测试架构为gulp+mocha+enzyme:gulp进行文件监听,mocha为测试框架,enzyme是针对react组件测试的一个库。配合IDE,能够实现开发的同时进行测试,并能立即观察到测试结果。
本文不足:只描述出开发时的测试,对集成测试、跨浏览器测试还没有涉足。笔者努力中 O(∩_∩)O
更详尽的代码在demo git地址:https://github.com/Penggggg/tdd-demo
预览图

gulp监听
var gulp = require('gulp');
const child_process = require('child_process');
var workerProcess;
gulp.task('default',['run_test'] ,function(){
console.log('run default')
})
gulp.task('run_test', function(){
gulp.watch(['src/**','test/**']) // 自定义监听文件,一个是项目代码,一个是测试代码
.on('change', function( ){
runTest( );
})
runTest( );
})
function runTest( ) {
// 杀掉上一次测试
try{ if( workerProcess!==undefined || workerProcess!==null ) {workerProcess.kill( );} }catch(e) { }
// 重启测试
workerProcess = child_process.exec(
'mocha --compilers ts:ts-node/register ./test/**/*.test.tsx --require ./config/dom.env.js', function( error, stdout, stderr ) {
if ( error ) { console.log( error.stack )}
console.log( stdout );
console.log( stderr )
})
}
mocha环境配置
由于是和Typescript进行配合,测试代码需要进行ts的编译,因此需要下载 ts-node 和测试框架 mocha (上文的倒数第6行代码)。
enzyme环境配置
小坑 1:测试文件后缀要写为 .tsx 而不是 .ts ,否则组件的尖括号无法被解析 let c = shallow(<Counter />);
小坑 2 :需要预先配置好dom环境并在启动mocha时首先加载 'mocha --compilers ts:ts-node/register ./test/**/*.test.tsx --require ./config/dom.env.js'
// dom.env.js
var jsdom = require('jsdom');
if (typeof document === 'undefined') {
global.document = jsdom.jsdom('<!doctype html><html><body></body></html>');
global.window = document.defaultView;
global.navigator = global.window.navigator;
}
IDE配合
如果想一边编码一边能看到测试效果就需要IDE配合了(如上图),而不是另外开一个cmd。
这里推荐VSCode(F1搜索terminal并打开)和Atom(安装atom-terminal插件)
前端自动化测试 —— TDD环境配置(React+TypeScript)的更多相关文章
- APP自动化测试的环境配置
什么是Appium? 第三方自动化框架(工具),扩充了selenium webdriver 协议,在原有的基础上添加了移动端测试API selenium webdriver 指定了客户端到服务端的协议 ...
- win10环境配置react
1 react 需要nodejs所以需要安装nodejs环境,到nodejs官网下载 现在默认会安装nodejs 和 npm包 和 配置环境 2 检查是否安装成功,在命令行中输入 显示成功则正确 3 ...
- 前端基础入门第一阶段-Web前端开发基础环境配置
Web前端和全栈的定义: A.什么是传统传统web前端:需要把设计师的设计稿,切完图,写标签和样式,实现JS的效果,简而言之即只需要掌握HTML的页面结构,CSS的页面样式,javaScript页面的 ...
- Vue 前端uni-app多环境配置部署服务器的问题
目录 前端Vue 针对问题 package.json描述 多环境部署 查看源码获取解决方案 转载请标明出处: http://dujinyang.blog.csdn.net/ 本文出自:[奥特曼超人的博 ...
- 前端开发本地环境配置(Apache+Dreamweaver)
一.安装apache服务器 1.下载apache软件: 2.安装,直接下一步就好: 3.安装好后找到安装文件夹下的conf文件中的httpd.conf: 4.打开httpd.conf文件,做以下修改: ...
- 前端快闪三:多环境灵活配置react
你已经使用Create React App脚手架搭建了React应用,现在该部署了. 一般会使用npm run build或者yarn build构建出静态资源, 由web服务器承载. 您会体验到 多 ...
- windows 7下React Native环境配置
React Native 是 Facebook 推出的一个用 Java 语言就能同时编写 ios,android,以及后台的一项技术,它可以做到实时热更新 .FaceBook 也号称这们技术是 “Le ...
- 手把手教你webpack、react和node.js环境配置(上篇)
很多人刚学习react的时候,往往因为繁琐的配置而头疼,这里我将手把手教大家怎么用webpack配置react和redux的环境,这篇教程包括前端react和后台node整个网站的环境配置,对node ...
- 手把手教你webpack、react和node.js环境配置(下篇)
上篇我介绍了前端下webpack和react.redux等环境的配置,这篇将继续重点介绍后台node.js的配置. 这里是上篇链接:手把手教你webpack.react和node.js环境配置(上篇) ...
随机推荐
- u-boot-2015.04 在tq2440上的移植(使用spl引导u-boot)
本次移植跟以往的不同之处是采用了spl来引导u-boot,参考了博客http://blog.csdn.net/fulinus/article/details/42738641 下载链接:http:// ...
- 总结:如何使用redis缓存加索引处理数据库百万级并发
前言:事先说明:在实际应用中这种做法设计需要各位读者自己设计,本文只提供一种思想.准备工作:安装后本地数redis服务器,使用mysql数据库,事先插入1000万条数据,可以参考我之前的文章插入数据, ...
- 谈谈枚举的新用法——java
问题的由来 前段时间改游戏buff功能,干了一件愚蠢的事情,那就是把枚举和运算集合在一起,然后运行一段时间后buff就出现各种问题,我当时懵逼了! 事情是这样的,做过游戏的都知道,buff,需要分类型 ...
- 【WPF】ChartControl的使用
一.前言 本月正好做一些关于工程4D,5D的界面展示,正好要用到Dev控件中的ChartControl控件,也就是图表控件. 折腾了两星期完成了一个比较能说的过去的界面吧.(领导要求高,可 ...
- PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库
最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...
- VC程序获取管理员权限
一: 编译程序的时候设置一下 在项目属性--连接器--清单文件--UAC执行级别改为requireAdministrator 二: void GainAdminPrivileges(CString s ...
- Devexpress GridControl.Export
private void mnuExportTable_ItemClick_1(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { u ...
- Navisworks Api Quantification
Quantification 国外有的叫定量 我们国内一些施工方叫工程量. 通过TakeOff API的开发者有机会获得更多的数据和数据可通过图形用户界面. 1 添加Navisworks的Api ...
- Navisworks 2014 Api 简单的使用
初次接触Navisworks Api .NET 的二次开发.主要是研究了一下.关于NavisWorks 结构树的加载. void LoadModel() { //清空当前的结构树信息 treeVie ...
- Python VS PHP 基础语法
这几天在学习Python,鄙人平时学习中为了方便记忆和更好的比较与理解语言二者之间在某些情况的优劣性,所以花了点时间,整理了一下 Python 和 PHP 常用语法的一些区别. 一.大小写 PHP: ...