前端自动化测试 —— TDD环境配置(React+TypeScript)

时间:2022-10-20 16:35:02

欢迎讨论与指导:)

  前言

    TDD —— Test-Drive Development是测试驱动开发的意思,是敏捷开发中的一项核心实践和技术,也是一种测试方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码 —— 引自百度百科。

    在开发时,希望能够改动项目代码或者测试代码时能够自动进行测试,并停止上一次的测试(如果有的话)。因此基本测试架构为gulp+mocha+enzyme:gulp进行文件监听,mocha为测试框架,enzyme是针对react组件测试的一个库。配合IDE,能够实现开发的同时进行测试,并能立即观察到测试结果。

    本文不足:只描述出开发时的测试,对集成测试、跨浏览器测试还没有涉足。笔者努力中 O(∩_∩)O

    更详尽的代码在demo git地址:https://github.com/Penggggg/tdd-demo

  预览图

前端自动化测试 —— TDD环境配置(React+TypeScript)

  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)的更多相关文章

  1. APP自动化测试的环境配置

    什么是Appium? 第三方自动化框架(工具),扩充了selenium webdriver 协议,在原有的基础上添加了移动端测试API selenium webdriver 指定了客户端到服务端的协议 ...

  2. win10环境配置react

    1 react 需要nodejs所以需要安装nodejs环境,到nodejs官网下载 现在默认会安装nodejs 和 npm包 和 配置环境 2 检查是否安装成功,在命令行中输入 显示成功则正确 3 ...

  3. 前端基础入门第一阶段-Web前端开发基础环境配置

    Web前端和全栈的定义: A.什么是传统传统web前端:需要把设计师的设计稿,切完图,写标签和样式,实现JS的效果,简而言之即只需要掌握HTML的页面结构,CSS的页面样式,javaScript页面的 ...

  4. Vue 前端uni-app多环境配置部署服务器的问题

    目录 前端Vue 针对问题 package.json描述 多环境部署 查看源码获取解决方案 转载请标明出处: http://dujinyang.blog.csdn.net/ 本文出自:[奥特曼超人的博 ...

  5. 前端开发本地环境配置&lpar;Apache&plus;Dreamweaver&rpar;

    一.安装apache服务器 1.下载apache软件: 2.安装,直接下一步就好: 3.安装好后找到安装文件夹下的conf文件中的httpd.conf: 4.打开httpd.conf文件,做以下修改: ...

  6. 前端快闪三:多环境灵活配置react

    你已经使用Create React App脚手架搭建了React应用,现在该部署了. 一般会使用npm run build或者yarn build构建出静态资源, 由web服务器承载. 您会体验到 多 ...

  7. windows 7下React Native环境配置

    React Native 是 Facebook 推出的一个用 Java 语言就能同时编写 ios,android,以及后台的一项技术,它可以做到实时热更新 .FaceBook 也号称这们技术是 “Le ...

  8. 手把手教你webpack、react和node&period;js环境配置(上篇)

    很多人刚学习react的时候,往往因为繁琐的配置而头疼,这里我将手把手教大家怎么用webpack配置react和redux的环境,这篇教程包括前端react和后台node整个网站的环境配置,对node ...

  9. 手把手教你webpack、react和node&period;js环境配置(下篇)

    上篇我介绍了前端下webpack和react.redux等环境的配置,这篇将继续重点介绍后台node.js的配置. 这里是上篇链接:手把手教你webpack.react和node.js环境配置(上篇) ...

随机推荐

  1. iOS中获取当前时间,设定时间,并算出差值

    NSDate *date = [NSDate date];//获取当前时间 NSTimeZone *zone = [NSTimeZone systemTimeZone];//修改时区 NSIntege ...

  2. ”sql Server2008 应用程序无法启动&comma;因为应用程序的并行配置不正确。 找不到从属程序集。&OpenCurlyDoubleQuote;C&colon;&bsol;windows&bsol;SysWOW64&bsol;DTSPipelinePerf100&period;dll”的激活上下文生成失败&OpenCurlyDoubleQuote;的解决方案

    一:控制面板->管理工具->事件查看器->windows日志->应用程序   查看错误原因: 二:在其他机子上拷贝一个DTSWizard.exe.config文件替换本机上已经 ...

  3. asp&period;net获取ip地址的方法

    在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的I ...

  4. Ansible&commat;一个有效的配置管理工具--Ansible configure management--翻译(十二)

    如果没有书面授权,请勿转载 第五章 自己定义模块 External inventories In the first chapter we saw how Ansible needs an inven ...

  5. 匿名方法和Lambda表达式

    匿名方法本质上是一传递给委托的代码块,是使用委托的另一种方法. 规则: 1.匿名方法中不能使用跳转语句跳至次匿名方法的外部,反之亦然:匿名方法外部的跳转语句也不能跳转到匿名方法的内部: 2.在匿名方法 ...

  6. 让delphi程序不受WINDOWS日期格式的影响(使用SetLocaleInfo函数和Application&period;UpdateFormatSettings)

    如果WINDOWS系统的短日期格式为“yyyy/m/d”,执行下面的代码会报错:2013-01-29 00:00:00不是合法的日期procedure TFrmQuerySale.FormShow(S ...

  7. 内核kconfig语法及原理

    语法 http://www.cnblogs.com/AP0904225/p/5967979.html 目前自己用过 一.菜单 menu "desc" endmenu 二.可配菜单 ...

  8. 什么是mybatis 为什么要使用my batis

    1.定义MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.2.使用原因MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用 ...

  9. x的x次幂的值为10,求x的近似值

    public class Main { static double eps = 1e-7; public static void main(String[] args){ double l = 2,r ...

  10. js 标签云

    以前只看到wordpress上面有个标签云的效果挺6,就好奇的弄个试试,还好网上有很多小伙伴的分享了,借鉴过来了  哈哈 html代码 <!DOCTYPE html> <html&g ...