Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

  • 应用框架

  • 工程能力

    • 工程效率

    • 编译构建

    • 工程管理

    • JS 模块化

    • CSS 模块化

    • 工程质量

    • 前端测试

      • E2E

      • 单元测试

        • Jest
          • 清除模块缓存,每次 require 都重新创建
            • resetModules 原理解析
          • toBe toEqual toStrictEqual 的区别
        • enzyme
    • CI&CD

  • 应用基础

  • 专业领域

  • 业务场景

  • 大前端
  • 工程能力
  • 前端测试
  • 单元测试
gahing
2021-09-21
目录

Jest草稿

# Jest

https://jestjs.io/docs/zh-Hans/22.x/cli

# 清除模块缓存,每次 require 都重新创建

一般用来测试导出模块是否为单例,存在全局,命中缓存

const ExtensionBridge1 = require(pkg).default;
jest.resetModules();
const ExtensionBridge2 = require(pkg).default;
expect(ExtensionBridge1).toStrictEqual(ExtensionBridge2)
1
2
3
4

试了 delete require.cache[require.resolve(module)]; 貌似不可行,需要分享下 resetModule 的原理

# resetModules 原理解析

# toBe toEqual toStrictEqual 的区别

  • toBe 使用 Object.is 进行比较;基础类型需要值相同,引用类型需要引用相同;相比 === 对数值类型做了一些处理

  • toEqual 递归比较(深比较)

  • toStrictEqual 对象结构相同比较,不考虑值是否相同

demo:

const can1 = {
  flavor: 'grapefruit',
  ounces: 12,
};
const can2 = {
  flavor: 'grapefruit',
  ounces: 12,
};

describe('the La Croix cans on my desk', () => {
  test('have all the same properties', () => {
    expect(can1).toEqual(can2);
  });
  test('are not the exact same can', () => {
    expect(can1).not.toBe(can2);
  });
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
编辑 (opens new window)
上次更新: 2024/09/01, 23:56:56
浏览器自动化工具
enzyme

← 浏览器自动化工具 enzyme→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式