SuperAPI AI 工具集

mockable-code

测试与质量

查看项目

更新于 10-15 23:42

技能介绍

用途:在编写、编辑、重构和审查代码时,让依赖可被测试替身替换,而不改变生产设计。任务涉及源码且行为依赖协作者、I/O、时间、随机性、持久化、配置、网络、队列、SDK、进程状态或框架上下文时,可在后台加载该技能;小改动只静默应用核心规则,并仅说明影响实现的决策。

主要能力:区分决策与副作用,使领域策略无需真实网络、时钟、文件、数据库、队列或随机性即可测试;在模块、构造函数、函数、处理器或上下文边界显式化协作者;优先使用窄契约;保持生产装配方便,同时允许测试覆盖协作者而不 monkeypatch 全局状态;按需选择 stub、fake、mock/spy 与契约测试;避免为测试暴露私有内部。

使用方式:先侦察现有构造、依赖注入、测试夹具与适配器模式;列出硬依赖并决定哪些留在边界;选择最小替换点(构造参数、函数参数、接口/协议、工厂、上下文对象、模块导入覆盖、夹具或框架提供者);用有意义的替身验证,覆盖失败路径,并在边界可能漂移处保留适配器或集成测试。可选辅助脚本:python3 scripts/analyze_mockability.py /path/to/project,加 --json 输出 JSON;它只标记疑似硬编码副作用与全局变量,不能作为结论。

适用场景:新增调用依赖的代码、重构难测代码、选择测试替身、代码审查、为他人规划工作。

限制:可 mock 不等于测试充满 mock,优先行为测试与 fake;不要为每个类加接口;隐藏的时钟、随机、环境变量与全局上下文读取同样会破坏测试;monkeypatch 不应成为核心生产代码替换协作者的唯一方式;依赖注入可能掩盖构造错误;不要为测试把私有方法公开。用户要求极速或一次性原型时,保持生产代码简单,仅在成本低时隔离昂贵或不可逆副作用,不为假想未来测试构建宽泛抽象。