51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 874|回复: 0
打印 上一主题 下一主题

[转贴] 前端自动化测试框架Jest的简单配置

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:05
  • 签到天数: 1048 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-4-28 10:06:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    在之前的文章中,我们实现了 expect 方法 和 test 方法,介绍了 Jest 的基础使用,今天我们来说说 Jest 的简单配置。
      Jest 和 Webpack 一样都有默认配置,我们可以运行 npx jest --init 命令来初始化默认配置。在运行命令行的时候,会弹出一些选项,比如:
      ·是否需要开启typescript
      · 是否需要生成覆盖率报告
      · 选择node 环境或者浏览器环境
      · 在测试完成之后,是否需要进行一些清除工作
      ……
      这些选项可以根据自己的实际情况进行选择是或者否。

    当全部选择完成之后,可以看到在目录中多了一个 jest.config.js 文件,这时候就说明初始化配置完成了。

      代码测试覆盖率
      当我们在控制台中输入npx jest --coverage时,控制台会打印出以下信息:

    这是一个关于测试覆盖率的说明,这是一个图表信息,它告诉我们所有的文件都被100%的测试到了。
      如果觉得执行npx jest --coverage命令太麻烦,你也可以将如下代码添加到 package.json 中:
    1. "scripts": {
    2.   "test": "jest",
    3.   "coverage": "jest --coverage"
    4. },
    复制代码
     然后可以执行npm run coverage,和执行npx jest --coverage是一样的效果。
      除了控制台可以看到图表信息之外,你还可以在当前目录下看到一个生成的coverage目录:

    在里面有一个lcov-report文件夹,里面有一个index.html,我们打开它会看到:

    可以看到,这是一个通过Jest生成的非常漂亮的html页面,上面会告诉我们,我们的每一个文件的测试到底覆盖了多少代码。可以看到,math.js 中的代码都被100%覆盖到了。
      通过这个例子,我们就理解了code coverage(代码覆盖率)的意思了。
      总结来说:测试覆盖率就是我们编写的测试代码对原来的功能代码的占比。
      tips: 配置文件中的coverageDirectory就是代码测试覆盖率生成报告所在的文件夹的名字:
    1. module.exports = {
    2.   coverageDirectory: "abc"
    3. };
    复制代码
     例如,我们让coverageDirectory的值为abc,那么生成的测试报告就在目录abc下面。

      把commonjs改成es module
      我们先把 math.js 和 math.test.js 中的代码改成 es module 的规范:
    1. // math.js

    2. export function add(a, b) {
    3.   return a + b;
    4. }

    5. export function minus(a, b) {
    6.   return a - b;
    7. }

    8. export function multi(a, b) {
    9.   return a * b;
    10. }
    复制代码
    1. // math.test.js

    2. import { add, minus, multi } from "./math";

    3. test("测试加法 3 + 3", () => {
    4.   expect(add(3, 3)).toBe(6);
    5. });

    6. test("测试减法 3 - 3", () => {
    7.   expect(minus(3, 3)).toBe(0);
    8. });

    9. test("测试乘法 3 * 3", () => {
    10.   expect(multi(3, 3)).toBe(9);
    11. });
    复制代码
    然后运行 npm run test,会发现控制台报错了。
      要解决这个问题,需要用到 Babel 把代码进行转化就OK了,如果想让 Babel 支持 ESM,我们需要三个包:
      ·@babel/core:babel核心库
      · @babel/preset-env:进行 ES 语法转换的库
      · babel-jest:和 Jest 通信的库,用来检测是否安装了上面两个依赖
      但是因为我们在安装 Jest 的时候 babel-jest 就默认被安装了,所以我们只需要安装剩下两个包就行了。
      安装依赖:
    1. npm install @babel/core @babel/preset-env -D
    复制代码
     注:-D 是 --save -dev 的缩写。
      安装完成之后,在项目的根目录下创建一个 .babelrc 配置文件:

    创建完成之后,将如下代码添加到 .babelrc 中:
    1. {
    2.   "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]]
    3. }
    复制代码
    保存之后,重新运行 npm run test,执行测试用例即可。







    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-19 00:31 , Processed in 0.062346 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表