【资源目录】:
├── 1.视频
│ ├── 001.01-为什么写测试-更高阶的调试手法-提高开发效率.mp4
│ ├── 002.02-单元测试在修改代码时的好处.mp4
│ ├── 003.03-写测试的好处-活文档&改善程序设计.mp4
│ ├── 004.04-自动化思维-功能验证.mp4
│ ├── 005.05-自动化思维-定位&修复bug.mp4
│ ├── 006.06-单元级别的功能测试.mp4
│ ├── 007.07-写测试的顺序-后补测试.mp4.mp4
│ ├── 008.08-写测试的顺序-通过单元测试替换手动验证.mp4
│ ├── 009.09-写测试的顺序-先写测试后实现 TDD.mp4
│ ├── 010.10-不写测试的原因.mp4
│ ├── 011.11-编写第一个单元测试.mp4
│ ├── 012.12-掌握 Vitest 的基础 API.mp4.mp4
│ ├── 013.13-掌握 Vitest 的调试技巧.mp4.mp4
│ ├── 014.14-实现 mini-test-runner.mp4.mp4
│ ├── 015.15-对比 Vitest 和 Jest 之间的差异.mp4
│ ├── 016.16-准备测试数据的三种方式.mp4
│ ├── 017.17-后门操作准备数据的方式.mp4.mp4
│ ├── 018.18-最小准备测试数据原则.mp4
│ ├── 019.19-程序的间接输入-依赖函数调用-stub 的应用.mp4
│ ├── 020.20-程序的间接输入-第三方库&对象&class&常量.mp4.mp4
│ ├── 021.21-程序的间接输入-环境变量-全局global-间接层处理技巧.mp4
│ ├── 022.22-程序的间接输入-依赖注入.mp4.mp4
│ ├── 023.23-状态验证.mp4
│ ├── 024.24-行为验证.mp4.mp4
│ ├── 025.25-不知道验证什么-完美主义&功能的目的&小步走.mp4 .mp4
│ ├── 026.26-可预测性-随机数-日期date.mp4
│ ├── 027.27-快速反馈-处理异步代码time—promise.mp4
│ ├── 028.28-API 的多种测试方案.mp4
│ ├── 029.29-参数化验证.mp4
│ ├── 030.30-手动测试到单元测试的认知转变.mp4
│ ├── 031.31-测试的基本策略-正向测试&反向测试&异常测试.mp4
│ ├── 032.32-不是所有代码都值得写测试.mp4
│ ├── 033.33-掌握使用 test double 测试替身的核心思想.mp4
│ ├── 034.34-测试替身的类型-dummy-stub-spy-mock-fake.mp4
│ ├── 035.35-独居测试和群居测试.mp4
│ ├── 036.36-测试的拆卸.mp4
│ ├── 037.37-Vitest 模拟浏览器环境&自定义环境.mp4
│ ├── 038.38-给测试命名的艺术.mp4
│ ├── 039.39-调用同一模块内的函数会 mock 失败.mp4
│ ├── 040.40-snapshot 快照测试.mp4
│ ├── 041.Vue实战-01-项目概述.mp4
│ ├── 042.Vue实战-1.1-登录注册功能介绍.mp4
│ ├── 043.Vue实战-02-启动项目的方式.mp4
│ ├── 044.Vue实战-03-第一个组件 TheHeader-测试 useRouter 的策略.mp4
│ ├── 045.Vue实战-04-测试 useRouter 的最佳策略.mp4
│ ├── 046.Vue实战-05-重构测试 useRouter 的代码 提炼公共 helper 函数.mp4
│ ├── 047.Vue实战-06-测试 window.open 的方式&重构整理 theHeader.mp4
│ ├── 048.Vue实战-07-第二个功能 command 搜索功能的介绍和代码实现.mp4
│ ├── 049.Vue实战-08-测试 commandModal&键盘事件.mp4
│ ├── 050.Vue实战-09-测试 search&timer&promise&独居测试.mp4
│ ├── 051.Vue实战-10-测试 searchTasks & 测试 pinia.mp4
│ ├── 052.Vue实战-11-测试 searchCommands.mp4
│ ├── 053.Vue实战-12-群居测试 search 功能.mp4
│ ├── 054.Vue实战-13-测试 tasks store – addTask 功能.mp4
│ ├── 055.Vue实战-14-测试 tasks store(2).mp4
│ ├── 056.Vue实战-15-测试 tasks store(3).mp4
│ ├── 057.Vue实战-16-测试 tasks store(4) – 通过单元测试抓bug.mp4
│ ├── 058.Vue实战-17-测试 tasks(5) & 尝鲜TDD.mp4
│ ├── 059.Vue实战-18-解决 indexedDB is not defined 报错.mp4
│ ├── 060.Vue实战-19-http 模块的功能介绍.mp4
│ ├── 061.Vue实战-20-测试 http 模块.mp4
│ ├── 062.Vue实战-21-使用 TDD 的方式测试 router 模块.mp4
│ ├── 063.Vue实战-22-测试 gotoLogin & 重构 router 测试逻辑.mp4
│ ├── 064.Vue实战-23-测试登录表单的正确方式-单元测试的三要点.mp4
│ ├── 065.Vue实战-24-使用 snapshot 测试表单 rule.mp4
│ ├── 066.Vue实战-25-测试拖拽功能.mp4
│ ├── 067.推箱子-01-项目概述.mp4
│ ├── 068.推箱子-02-初始化项目.mp4
│ ├── 069.推箱子-03-实现地图.mp4
│ ├── 070.推箱子-04-实现玩家&移动.mp4
│ ├── 071.推箱子-05-实现玩家碰撞墙.mp4
│ ├── 072.推箱子-06-实现箱子的渲染.mp4
│ ├── 073.推箱子-07-实现推箱子.mp4
│ ├── 074.推箱子-08-实现箱子碰到墙&碰到箱子的检测.mp4
│ ├── 075.推箱子-09-实现放置点的渲染.mp4
│ ├── 076.推箱子-10-实现箱子检测放置点.mp4
│ ├── 077.推箱子-11-实现游戏通关的检测.mp4
│ ├── 078.推箱子-12-实现进入下一关-动态初始化游戏.mp4
│ ├── 079.推箱子-13-实现进入下一关-切换游戏数据.mp4
│ ├── 080.推箱子-14-阶段性总结.mp4
│ ├── 081.推箱子-15-地图编辑器概述.mp4
│ ├── 082.推箱子-16-实现路由的切换.mp4
│ ├── 083.推箱子-17-实现地图编辑区.mp4
│ ├── 084.推箱子-18-实现元素选择.mp4
│ ├── 085.推箱子-19-实现动态设置地图的行和列-初始化.mp4
│ ├── 086.推箱子-20-实现动态设置地图的行和列-更新行.mp4
│ ├── 087.推箱子-21-实现动态设置地图的行和列-更新列.mp4
│ ├── 088.推箱子-22-实现拖拽批量设置地图.mp4
│ ├── 089.推箱子-23-实现放置玩家.mp4
│ ├── 090.推箱子-24-实现显示当前选择的编辑元素.mp4
│ ├── 091.推箱子-25-实现放置箱子.mp4
│ ├── 092.推箱子-26-实现放置目标点.mp4
│ └── 093.推箱子-27-实现数据展示区.mp4
└── 2.资料
├── front-end-testing-main
│ ├── docs
│ │ └── …
│ ├── file_2.gitignore
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── README.md
│ └── yarn.lock
└── 大纲+代码.txt



