ava 类似jest snapshot 功能试用
ava也提供了类似jest 的snapshot 测试,可以用来方便的测试web 组件,以下是一个简单的试用,
同时包含了自己碰到问题,以及解决方法,以及一些参考链接
使用typescript 以及tsx,测试react 组件
环境准备
- 项目结构
├── package.json
├── src
│ ├── app.ts
│ ├── hello-component.tsx
│ └── userlogin.tsx
├── tests
│ ├── app.js
│ ├── hello-component.js
│ └── userlogin.js
├── tsconfig.json
└── yarn.lock
- 代码说明
src 为typescript 代码,tests 为集成ava 测试
package.json 包含ava 的一些配置,项目依赖,以及npm script
{
"name": "@rongfengliang/ava-test-learning",
"version": "1.0.1",
"main": "index.js",
"license": "MIT",
"devDependencies": {
"@babel/polyfill": "^7.6.0",
"@babel/preset-react": "^7.6.3",
"@babel/register": "^7.6.2",
"@types/react": "^16.9.11",
"ava": "^2.4.0",
"react": "^16.11.0",
"react-test-renderer": "^16.11.0",
"typescript": "^3.6.4",
"zen-observable": "^0.8.14"
},
"ava": {
"require": [
"@babel/register",
"@babel/polyfill"
]
},
"scripts": {
"test:live": "ava -v -w",
"test": "ava -v",
"build:live": "tsc --watch"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
}
}
tsconfig.json 文件定义
{
"compilerOptions": {
"target": "es5",
"module": "umd",
"declaration": true,
"outDir": "libs",
"rootDir": "src",
"jsx": "react",
"removeComments": false,
"strict": true,
"moduleResolution": "node"
}
}
src/app.js 可选 ,一个简单的module
// define user entity
let user = {
/** user name */
name:"dalong",
/** user age */
age:33
}
// for export default
export default {
user
}
export {
user
}
src/hello-component.tsx 一个测试组件
import React = require("react");
const HelloWorld = () => <h1>Hello World...!</h1>;
export default HelloWorld;
src/userlogin.tsx 另外一个测试组件
import React = require("react");
/**
* loginForm component
*/
const LoginForm = ()=>
<div>
<h1>userename </h1>
<input placeholder="please input your name" />
<h1>pasword</h1>
</div>
export default LoginForm;
tests/hello-component.js snapshot 测试,userlogin.js 类似
babel 配置,为了简单使用6的格式,进行react 的处理,vue 也类似的
{
"presets": ["@babel/preset-react"]
}
启动&&测试
- 启动实时编译
yarn build:live
- 启动测试
yarn test:live
- 效果

修改组件,查看snapshot
src/hello-component.tsx
import React = require("react");
const HelloWorld = () => <h1>dalong World...!</h1>;
export default HelloWorld;

几个问题
- 新版本的变动
新版本为了支持babel 7 ava 做了好多修改
比如package.json 中关于ava 的配置以及依赖的preset
"ava": {
"require": [
"@babel/register",
"@babel/polyfill"
]
}
- regeneratorRuntime is not defined
添加@babel/polyfill
说明
以上是一个简单的试用,还是得多看看github issue
参考资料
https://github.com/avajs/ava/issues/1640
https://github.com/avajs/ava/issues/1968
https://github.com/avajs/ava/issues/685
https://github.com/rongfengliang/ava-test-learning
ava 类似jest snapshot 功能试用的更多相关文章
- Jquery打造的类似新浪微博@提醒功能
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
- HBase Snapshot功能介绍
HBase在0.94之后提供了Snapshot功能,一个snapshot其实就是一组metadata信息的集合,它可以让管理员将表恢复到以前的一个状态.snapshot并不是一份拷贝,它只是一个文件名 ...
- ios实现类似魔兽小地图功能 在
写了一个类似魔兽小地图功能的控件. 比如你有一个可以放大缩小的scrollView.会在里面进行一些放大缩小,点击里面的按钮呀,等操作. 这个小地图控件.就会和你的大scrollView同步.并有缩略 ...
- js/jQuery实现类似百度搜索功能
一.页面代码:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. ...
- pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大。
Select rows from a DataFrame based on values in a column -pandas 筛选 https://stackoverflow.com/questi ...
- vue 使用watch监听实现类似百度搜索功能
watch监听方法,watch可以监听多个变量,具体使用方法看代码: HTML: <!doctype html> <html lang="en"> < ...
- 一个类似indexOf()的功能的函数
之前面试的时候遇到了这样的一道题,不过写的时候有些细节没注意到,现在重新写了一下. 写一个类似indexOf()的功能的函数 var str = "dafdfgvdahjfbhyuyvtur ...
- AVD Snapshot功能
写程序的时候,经常会碰到:The application has stopped unexpectly… 有时候,会想对原来软件增加新功能或者修改bug.在eclipse修改后保存代码(注意,要保存所 ...
随机推荐
- Python协程介绍(转)
原文:https://www.liaoxuefeng.com/wiki/897692888725344/923057403198272 协程,又称微线程,纤程.英文名Coroutine. 协程的概念很 ...
- kubeadm初始化集群
通过kubeadm创建集群本地测试非常方便,以下就简单记录下初始化需要的基本命令,环境准备这里不做说明 简单记录kubeadm初始化集群的基本命令 # 初始化集群 kubeadm init --kub ...
- Python Web 之 Flask SQLalchemy
Flask-SQLalchemy 一. 一对多 A表中的一条记录与B表中的多天记录关联 语法实现: 在"多"实体类中增加 外键列名 = db.Column(db.Integer, ...
- latex中添加C++代码
用到listings宏包,模板如下: \documentclass[UTF8]{ctexart} \usepackage[a4paper,top=2cm,bottom=2cm,left=2cm,rig ...
- 入门-windows下安装ETH挖矿
对刚入门的区块链开发者来说,刚开始可以在windows本地搭建私有链,便于操作,毕竟,要想真正挖到币还是有难度的,下面以ETH为例,在windows环境下安装并实现挖矿. 步骤一.安装geth环境.下 ...
- C# vb .net图像合成-合成自定义路径
在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...
- SpringMVC中的400错误,The request sent by the client was syntactically incorrect.
在其他对象属性类型一样情况下,只需要创建一个类,再在springmvc.xml中添加配置: package com.ujiuye.common; import org.springframework. ...
- 走一次HashMap的存取
忘了太多东西,好好复习. 存: if ((tab = table) == null || (n = tab.length) == 0) n = (tab = resize()).length;//检查 ...
- HTML不换行,多余用省略号代替
最主要的css样式: white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 例子: <!DOCTYPE html> ...
- js学习之堆栈内存
**栈内存** >基本数据类型值是直接存放在栈内存中的 栈内存中的变量一般都是已知大小或者有范围上限的,算作一种简单存储.而堆内存存储的对象类型数据对于大小这方面,一般都是未知的.个人认为,这也 ...