📁 【催学社】前端的单元测试课(1) 📁 2.资料 📁 1.视频 📁 front-end-testing-main 📄 大纲+代码.txt 📄 028.28-API 的多种测试方案.mp4 📄 026.26-可预测性-随机数-日期date.mp4 📄 025.25-不知道验证什么-完美主义&功能的目的&小步走.mp4.mp4 📄 014.14-实现 mini-test-runner.mp4.mp4 📄 024.24-行为验证.mp4.mp4 📄 027.27-快速反馈-处理异步代码time—promise.mp4 📄 021.21-程序的间接输入-环境变量-全局global-间接层处理技巧.mp4 📄 022.22-程序的间接输入-依赖注入.mp4.mp4 📄 019.19-程序的间接输入-依赖函数调用-stub 的应用.mp4 📄 030.30-手动测试到单元测试的认知转变.mp4 📄 029.29-参数化验证.mp4 📄 023.23-状态验证.mp4 📄 020.20-程序的间接输入-第三方库&对象&class&常量.mp4.mp4 📄 006.06-单元级别的功能测试.mp4 📄 008.08-写测试的顺序-通过单元测试替换手动验证.mp4 📄 013.13-掌握 Vitest 的调试技巧.mp4.mp4 📄 009.09-写测试的顺序-先写测试后实现 TDD.mp4 📄 001.01-为什么写测试-更高阶的调试手法-提高开发效率.mp4 📄 002.02-单元测试在修改代码时的好处.mp4 📄 007.07-写测试的顺序-后补测试.mp4.mp4 📄 004.04-自动化思维-功能验证.mp4 📄 012.12-掌握 Vitest 的基础 API.mp4.mp4 📄 016.16-准备测试数据的三种方式.mp4 📄 003.03-写测试的好处-活文档&改善程序设计.mp4 📄 018.18-最小准备测试数据原则.mp4 📄 011.11-编写第一个单元测试.mp4 📄 005.05-自动化思维-定位&修复bug.mp4 📄 010.10-不写测试的原因.mp4 📄 017.17-后门操作准备数据的方式.mp4.mp4 📄 015.15-对比 Vitest 和 Jest 之间的差异.mp4 📄 060.Vue实战-19-http 模块的功能介绍.mp4 📄 058.Vue实战-17-测试 tasks(5) & 尝鲜TDD.mp4 📄 050.Vue实战-09-测试 search&timer&promise&独居测试.mp4 📄 057.Vue实战-16-测试 tasks store(4) - 通过单元测试抓bug.mp4 📄 054.Vue实战-13-测试 tasks store - addTask 功能.mp4 📄 055.Vue实战-14-测试 tasks store(2).mp4 📄 056.Vue实战-15-测试 tasks store(3).mp4 📄 063.Vue实战-22-测试 gotoLogin & 重构 router 测试逻辑.mp4 📄 059.Vue实战-18-解决 indexedDB is not defined 报错.mp4 📄 053.Vue实战-12-群居测试 search 功能.mp4 📄 062.Vue实战-21-使用 TDD 的方式测试 router 模块.mp4 📄 042.Vue实战-1.1-登录注册功能介绍.mp4 📄 031.31-测试的基本策略-正向测试&反向测试&异常测试.mp4 📄 034.34-测试替身的类型-dummy-stub-spy-mock-fake.mp4 📄 086.推箱子-20-实现动态设置地图的行和列-更新行.mp4 📄 038.38-给测试命名的艺术.mp4 📄 039.39-调用同一模块内的函数会 mock 失败.mp4 📄 043.Vue实战-02-启动项目的方式.mp4 📄 046.Vue实战-05-重构测试 useRouter 的代码 提炼公共 helper 函数.mp4 📄 088.推箱子-22-实现拖拽批量设置地图.mp4 📄 090.推箱子-24-实现显示当前选择的编辑元素.mp4 📄 093.推箱子-27-实现数据展示区.mp4 📄 092.推箱子-26-实现放置目标点.mp4 📄 045.Vue实战-04-测试 useRouter 的最佳策略.mp4 📄 091.推箱子-25-实现放置箱子.mp4 📄 052.Vue实战-11-测试 searchCommands.mp4 📄 047.Vue实战-06-测试 window.open 的方式&重构整理 theHeader.mp4 📄 049.Vue实战-08-测试 commandModal&键盘事件.mp4 📄 084.推箱子-18-实现元素选择.mp4 📄 033.33-掌握使用 test double 测试替身的核心思想.mp4 📄 037.37-Vitest 模拟浏览器环境&自定义环境.mp4 📄 048.Vue实战-07-第二个功能 command 搜索功能的介绍和代码实现.mp4 📄 032.32-不是所有代码都值得写测试.mp4 📄 040.40-snapshot 快照测试.mp4 📄 044.Vue实战-03-第一个组件 TheHeader-测试 useRouter 的策略.mp4 📄 089.推箱子-23-实现放置玩家.mp4 📄 041.Vue实战-01-项目概述.mp4 📄 035.35-独居测试和群居测试.mp4 📄 036.36-测试的拆卸.mp4 📄 051.Vue实战-10-测试 searchTasks & 测试 pinia.mp4 📄 087.推箱子-21-实现动态设置地图的行和列-更新列.mp4 📄 061.Vue实战-20-测试 http 模块.mp4 📄 072.推箱子-06-实现箱子的渲染.mp4 📄 071.推箱子-05-实现玩家碰撞墙.mp4 📄 064.Vue实战-23-测试登录表单的正确方式-单元测试的三要点.mp4 📄 073.推箱子-07-实现推箱子.mp4 📄 065.Vue实战-24-使用 snapshot 测试表单 rule.mp4 📄 069.推箱子-03-实现地图.mp4 📄 067.推箱子-01-项目概述.mp4 📄 074.推箱子-08-实现箱子碰到墙&碰到箱子的检测.mp4 📄 075.推箱子-09-实现放置点的渲染.mp4 📄 083.推箱子-17-实现地图编辑区.mp4 📄 078.推箱子-12-实现进入下一关-动态初始化游戏.mp4 📄 081.推箱子-15-地图编辑器概述.mp4 📄 070.推箱子-04-实现玩家&移动.mp4 📄 066.Vue实战-25-测试拖拽功能.mp4 📄 077.推箱子-11-实现游戏通关的检测.mp4 📄 079.推箱子-13-实现进入下一关-切换游戏数据.mp4 📄 085.推箱子-19-实现动态设置地图的行和列-初始化.mp4 📄 068.推箱子-02-初始化项目.mp4 📄 080.推箱子-14-阶段性总结.mp4 📄 082.推箱子-16-实现路由的切换.mp4 📄 076.推箱子-10-实现箱子检测放置点.mp4 📁 docs 📄 yarn.lock 📄 pnpm-lock.yaml 📄 README.md 📄 package.json 📄 .gitignore 📁 .vitepress 📁 components 📁 public 📁 guide 📄 index.md 📄 CVideo.vue 📄 favicon.ico 📄 logo.png 📁 cache 📁 theme 📄 config.js 📄 03-unit-test-definition.md 📄 28-keeping-test-independent.md 📄 09-vitest-vs-jest.md 📄 23-test-third-party-library.md 📄 08-vitest-debug.md 📄 20-parameterized-test.md 📄 16-test-double.md 📄 22-test-api.md 📄 13-input-and-output.md 📄 04-when-writing-tests.md 📄 01-why-write-testing.md 📄 00-introduction.md 📄 05-why-not-write-tests.md 📄 12-where-put-test-data.md 📄 14-verify-way.md 📄 02-automatic-thinking.md 📄 19-layer-test.md 📄 07-vitest-test-api.md 📄 26-test-only-one-focus.md 📄 06-write-first-unit-test.md 📄 15-verify-what.md 📄 17-test-double-types.md 📄 10-mini-test-runner.md 📄 21-test-asynchronous.md 📄 18-setup-test-double.md 📄 11-to-prepare-data.md 📄 58-mini-vue-runtime-core-add-test.md 📄 33-low-levels-of-assertions.md 📄 35-magic-string.md 📄 42-the-fragile-test.md 📄 50-manual-debugging.md 📄 52-slow-test.md 📄 30-testable-design.md 📄 51-manual-intervention.md 📄 49-assertions-roller.md 📄 34-transition-assertion.md 📄 46-never-failed-test.md 📄 53-mature-and-not-repeat.md 📄 47-the-test-of-lying.md 📄 48-too-loose.md 📄 37-lengthy-installation.md 📄 55-vue3-project.md 📄 36-overprotective.md 📄 41-repetition.md 📄 59-tdd-args.md 📄 29-easy-and-read.md 📄 40-immaterial-details.md 📄 39-logical-division.md 📄 45-ambiguity-annotation.md 📄 43-the-lack-of-cohesion.md 📄 24-test-date.md 📄 27-avoid-condition-test-logic.md 📄 31-use-the-front-door-first.md 📄 32-isolation-SUT.md 📄 38-schizobulia.md 📄 54-oop-and-SOLID.md 📄 44-comment-out-the-test.md 📄 25-tear-down.md 📄 56-react-project.md 📄 course-overview.md 📄 57-vue3-tetris.md 📁 deps 📄 MyLayout.vue 📄 index.js 📄 _metadata.json 📄 vue.js.map 📄 vue.js 📄 package.json