1.首先搭建好php web服务器环境,不会自行百度
2.解压后将文件夹放到web服务器指定文件下
3.以指定文件夹为跟,用相对路径访问。
如:解压所有文件放在apache指定的htdocs文件夹下的captcha下(即将三个子文件里面的文件都放到captcha下),则访问数字字母文件地址为:http://127.0.0.1/captcha/form.php

文件:590m.com/f/25127180-500133862-604bf6(访问密码:551685)

以下内容无关:

-------------------------------------------分割线---------------------------------------------

我们现在在推进 EPC 的过程中,单元测试是必备的技能,在本地的 Git commit 之前进行单测非常有必要,总不能把所有的单测的压力都放在流水线上。

毕竟在流水线运行单测的成本还是挺高的,从 push 上去触发流水线,到感知单测的结果,至少需要好几分钟的时间。

棒棒哒-前端小茶馆公众号

因此我们有必要在 git commit 进行一些单测的检测。不过若我们每次在 commit 之前都完整地运行所有的单测用例,一个是没必要,再一个是耗时很长。

那应该怎么只运行有变动的文件的单测用例呢?

  1. 使用 husky 和 lint-staged
    我们接下来要使用 husky 和 lint-staged 组件,来实现在 commit 之前检测只发生变动的文件。

husky可以让我们很方便地设置 pre-commit 的钩子;
lint-staged组件能够在 Git commit 提交之前,获取上次 commit 到现在所有发生变动的文件。我们可以利用这个特性来运行 jest;
1.1 配置 husky 和 lint-staged
首先我们来安装和配置这两个组件。

$ npm i husky lint-staged --save-dev
$ npm set-script prepare “husky install”
$ npm run prepare
$ npx husky add .husky/pre-commit “npx lint-staged”
运行完上述 4 个命令后,然后在package.json中配置 lint-staged:

{
“scripts”: {
“test:staged”: “jest --bail --findRelatedTests”
},
“lint-staged”: {
“src/**/*.{js,jsx,ts,tsx}”: [“npm run test:staged”]
}
}
在 lint-staged 中支持node-glob通配符的配置,同时也支持配置多个,若发生变动的文件路径满足配置,则触发后面的命令。

上面通配符的意思是:src 目录中任意路径的任意以.js 或.jsx 或.ts 或.tsx 结尾的文件。

拽拽的-前端小茶馆公众号

1.2 配置 jest
我们在上面的 test:staged 命令配置上了 jest。

bail: 只要遇到运行失败的单测用例即退出;
findRelatedTests: 检测指定的文件路径;
其他更多的参数,可以直接查阅官方文档Jest CLI Options。

很多公共的数据,我们可以直接在jest.config.js中进行配置:

module.exports = {
roots: [’/src’], // 查找src目录中的文件
collectCoverage: true, // 统计覆盖率
coverageDirectory: ‘coverage’, // 覆盖率结果输出的文件夹
coverageThreshold: {
// 所有文件总的覆盖率要求
global: {
branches: 60,
functions: 60,
lines: 60,
statements: 60,
},
// 匹配到的单个文件的覆盖率要求
// 这里也支持通配符的配置
‘./src//*.{ts,tsx}’: {
branches: 40,
functions: 40,
lines: 40,
statements: 40,
},
},
// 匹配单测用例的文件
testMatch: [’/src/
/tests//*.{js,jsx,ts,tsx}’, '/src//.{spec,test}.{js,jsx,ts,tsx}’],
// 当前环境是jsdom还是node
testEnvironment: ‘jsdom’,
// 设置别名,若不设置,运行单测时会不认识@符号
moduleNameMapper: {
'^@/(.
)$’: ‘/src/$1’,
},
};
上面两个配置完成后,当本次 commit 发生变动的文件满足要求,至少有 1 个文件满足时,则就会执行npm run test:staged。

我们先运行下所有的测试用例:

npm run test-前端小茶馆公众号

可以看到,我们实际上有 2 个源文件,3 个测试文件。不过 add 相关的已经在上次 commit 提交过了,本次提交时,只有 uitils 和 utils.test 有变动。

$ git add .
$ git ci -m ‘test(utils): only test utils changed file’
从给出的测试报告能看出来,当前只检测了发生变动的 utils 文件:

test:staged-前端小茶馆公众号

  1. 覆盖率的要求
    我们在上面通过 jest.config.js 中的coverageThreshold属性,设置了全局覆盖率和单个文件的覆盖率。

我们再在代码新增几个文件,但不配置对应的测试文件。然后运行时发现,如果没有对应的测试文件,就不会检查该文件的覆盖率。

我这里特意把概率设置 100%,然后 math.js 没有对应的测试文件:

覆盖率-前端小茶馆公众号

从运行的测试结果来,这里只检测了有测试文件的 utils.js,并没有检测到 math.js。

这里我们就要新增一个属性了collectCoverageFrom:

{
collectCoverageFrom: [“src/**/*.{js,jsx,ts,tsx}”],
}
这时,我们再运行单测时,就能把所有符合要求的文件,都纳入到覆盖率的考核里了。

php 汉字、字母验证码 例子相关推荐

  1. java treemap字母排序_Java TreeMap对数字,英文字母,汉字等排序例子

    首页 > 基础教程 > 集合框架 > TreeMap类 Java TreeMap对数字,英文字母,汉字等排序例子 1. 对于一些简单的数字,英文字母等排序 TreeMap hm = ...

  2. python绘制动态模拟图-Python 模拟动态产生字母验证码图片功能

    模拟动态产生字母验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image ...

  3. python生成字母图片_Python 模拟动态产生字母验证码图片功能

    模拟动态产生字母验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image ...

  4. gbk编码在线转换工具_TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具

    本文要推荐的[TOOLFK]在线汉字/字母/人民币/简繁体转换工具,提供简繁体在线转换.人民币大写转换.字母大小写互转.汉字转拼音在线日常使用工具. 網站名稱:ToolFk 網站鏈結:https:// ...

  5. java 验证码 字母_使用java生成字母验证码

    本文实例为大家分享了java生成字母验证码的具体代码,供大家参考,具体内容如下 import java.awt.BasicStroke; import java.awt.Color; import j ...

  6. python用*号输出字母c的图案_第1.6题:使用Python生成字母验证码图片

    题目来自:Python 练习册.题目1.6:使用 Python 生成类似于下图中的字母验证码图片 查看更多于本人博客:李飞阳 参考代码 我们用随机颜色填充背景,再画上文字,最后对图像进行模糊,得到验证 ...

  7. TOOLFK工具-在线汉字/字母/人民币/简繁体转换工具

    本文要推荐的[TOOLFK]在线汉字/字母/人民币/简繁体转换工具,提供简繁体在线转换.人民币大写转换.字母大小写互转.汉字转拼音在线日常使用工具. 網站名稱:ToolFk 網站鏈結:https:// ...

  8. Python实现字母验证码图片

    本文主要是使用Python的第三方库Pillow,使用其中的Image.ImageDraw.ImageFont.ImageFilter模块实现了一个字母验证码图片的生成. 一.Pillow的安装 pi ...

  9. ASP.NET下英文及中文汉字的验证码控件

    本文转自http://bbs.msproject.cn/Default.aspx?g=posts&t=660 翻译 Nataraj K. 著Image Verifier - Custom Co ...

最新文章

  1. 单身的我听着单身情歌。。。看着那些儿时看过的小说。。。
  2. 1080*1920 下看网站很爽
  3. 又一位…8月,痛失6位院士!
  4. Android使用SurfaceView实现墨迹天气的风车效果
  5. 查询结果不跳转页面_商标检索查询的流程步骤是什么?
  6. VHDL 实现一位全加器以及 Quartus II 初探
  7. OpenCV基础——IplImage中的widthStep
  8. Windows 10 系统 Java 最新 最全 JDK下载 安装和环境配置 及 卸载:
  9. 科学计算机calc在哪儿,‎App Store 上的“NCalc科学计算器+”
  10. 吐血推荐:无解的完成图
  11. 计算机网络mac是什么意思,无线设备
  12. 目标文件夹访问被拒绝,您需要权限来执行此操作
  13. 教师运用计算机上课的随笔,初中信息技术教师的教学随笔5
  14. 负反馈元器件参数对功放性能的影响
  15. 快捷支付对银行的冲击及银行应对办法
  16. Flutter Candies 一桶天下,一个小例子彻底搞懂Android的MVP模式到底是什么
  17. 手机进水开机android,手机进水后开机只有启动画面进不了桌面怎么处理?
  18. C语言及ARM中堆栈指针SP设置的理解与总结
  19. OPC DA调研报告
  20. Hive启动报错:java.lang.ClassNotFoundException: org.apache.tez.dag.api.TezConfiguration

热门文章

  1. 爱因斯坦是人类历史上最伟大的科学家吗?
  2. 如何防止亚马逊账号关联的一些建议值得卖家们收藏?
  3. God--Ruby版的进程监控工具
  4. 互联网协议-简单理解和介绍
  5. uni-app 快速集成 IM 即时通信的方法——TUIKit 来啦
  6. php皮肤程序,2020修复升级版PHP全新皮肤界面点赞任务系统平台源码运营版,仿众人帮蚂蚁帮扶牛帮...
  7. 祝cattom考研成功
  8. 现在怎样做自媒体赚钱?
  9. 生日那天,我失恋了!!
  10. DPDK支持的硬件:CPU、网卡NIC、加密引擎、基带加速器