SuperAPI AI 工具集

exp-mock-usage-analysis

测试与质量

查看项目

更新于 10-16 00:05

技能介绍

用途:审计、审查或分析 .NET 测试中的 mock 使用情况,找出未使用、不必要或重复的 mock setup,帮助简化测试设置、减少过度 mock;也可用于判断 ILogger、IOptions 等类型的 mock 是否必要。

不适用:编写新的 mock 或测试、检测非 mock 类测试反模式、在 mock 框架之间迁移。

输入:测试代码(必需)与生产代码(必需,用于追踪执行路径)。

工作流程:先通读测试与生产代码,通过 Moq(new Mock<T>()/.Setup/.Verify)、NSubstitute(Substitute.For<T>()/.Returns/.Received)、FakeItEasy(A.Fake<T>()/A.CallTo/.MustHaveHappened)的模式识别所用框架并统一术语;再逐个 mock setup 沿生产方法在测试输入下的执行路径追踪,将 setup 分类为 Used、Unreachable、Unused、Redundant,重点关注提前返回与守卫子句、抛异常、按分支/类型分派逻辑、仅有 Verify 的测试;然后检查可替换的 mock,如 Mock<ILogger<T>> 可换 NullLogger<T>.Instance(断言日志输出时除外)、Mock<IOptions<T>> 可换 Options.Create(new T { ... }),DTO、record、值对象可直接 new,同时明确外部边界(数据库、HTTP 客户端、消息队列、第三方 API)与安全敏感类型的 mock 应保留;最后逐条报告,指出具体测试方法与 setup 行、为何不必要(附生产代码路径说明)以及具体修复方式,多处重复时给出提取共享 setup 的前后示例。

限制与注意:必须阅读生产代码而非只审查测试;每条发现需引用具体测试方法和 setup 行;不可达 setup 需说明由哪段生产路径造成;应显式说明位置正确的 mock;术语不可混用不同框架。其他细节暂未提供。