欢迎讨论与指导:)
前言
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环境配置(上篇) ...
随机推荐
-
iOS中获取当前时间,设定时间,并算出差值
NSDate *date = [NSDate date];//获取当前时间 NSTimeZone *zone = [NSTimeZone systemTimeZone];//修改时区 NSIntege ...
-
”sql Server2008 应用程序无法启动,因为应用程序的并行配置不正确。 找不到从属程序集。“C:\windows\SysWOW64\DTSPipelinePerf100.dll”的激活上下文生成失败“的解决方案
一:控制面板->管理工具->事件查看器->windows日志->应用程序 查看错误原因: 二:在其他机子上拷贝一个DTSWizard.exe.config文件替换本机上已经 ...
-
asp.net获取ip地址的方法
在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的I ...
-
Ansible@一个有效的配置管理工具--Ansible configure management--翻译(十二)
如果没有书面授权,请勿转载 第五章 自己定义模块 External inventories In the first chapter we saw how Ansible needs an inven ...
-
匿名方法和Lambda表达式
匿名方法本质上是一传递给委托的代码块,是使用委托的另一种方法. 规则: 1.匿名方法中不能使用跳转语句跳至次匿名方法的外部,反之亦然:匿名方法外部的跳转语句也不能跳转到匿名方法的内部: 2.在匿名方法 ...
-
让delphi程序不受WINDOWS日期格式的影响(使用SetLocaleInfo函数和Application.UpdateFormatSettings)
如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期procedure TFrmQuerySale.FormShow(S ...
-
内核kconfig语法及原理
语法 http://www.cnblogs.com/AP0904225/p/5967979.html 目前自己用过 一.菜单 menu "desc" endmenu 二.可配菜单 ...
-
什么是mybatis 为什么要使用my batis
1.定义MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.2.使用原因MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用 ...
-
x的x次幂的值为10,求x的近似值
public class Main { static double eps = 1e-7; public static void main(String[] args){ double l = 2,r ...
-
js 标签云
以前只看到wordpress上面有个标签云的效果挺6,就好奇的弄个试试,还好网上有很多小伙伴的分享了,借鉴过来了 哈哈 html代码 <!DOCTYPE html> <html&g ...