SuperAPI AI 工具集

vitest-mocking

测试与质量

查看项目

更新于 10-16 04:58

技能介绍

用途:为使用 Vitest 编写测试时提供测试替身(test double)与模拟(mocking)模式参考,帮助在需要 mock、spy、stub 或 fake 的场景中选择合适策略。

主要能力:区分四类测试替身——Spy(记录调用、验证交互,不改变实现)、Mock(整体替换模块)、Stub(返回预设响应)、Fake(可工作但简化实现),并给出决策指南:验证调用且保留真实行为用 spy;替换网络、数据库、第三方模块等外部依赖用 mock;替换浏览器或 Node 全局对象用 stubGlobal。

常用用法示例:用 vi.spyOn(globalThis, "fetch") 监视全局 fetch 并配合 toHaveBeenCalledWith 断言;用 vi.mock("./api-client") 配合 vi.mocked(...).mockResolvedValue 替换模块;用 vi.stubGlobal("fetch", vi.fn().mockResolvedValue(mockResponse)) 替换全局;vi.mock 会被提升到顶部,可传入工厂函数附带实现;spy 可链式 .mockReturnValue 返回假值;可直接赋值 globalThis.fetch 并构造 Response 形状的返回;用 vi.useFakeTimers()/vi.useRealTimers() 控制时间,并用 vi.advanceTimersByTimeAsync(5000) 推进。清理方面:beforeEach 中用 vi.clearAllMocks() 重置调用计数,afterEach 中用 vi.restoreAllMocks() 恢复原始实现。

适用场景:单元测试与组件测试中隔离外部依赖、验证函数调用、控制时间与全局对象。完整示例(默认导入、具名导入、类、部分 mock、快照测试、组合式函数与验证模式)见 references/cheat-sheet.md。

限制:资料仅给出模式与片段,未提供安装命令、版本要求、配置方式、各 API 的完整语义、性能或平台信息,这些暂未提供。