SuperAPI AI 工具集

generate-testability-wrappers

测试与质量

查看项目

更新于 10-16 00:05

技能介绍

用途:把不可测试的静态依赖(时间、文件系统、环境、网络、控制台、进程)改造成可注入的抽象,便于在测试中替换为假实现。适用于已用detect-static-dependencies找出待包装静态成员之后,或需要让某类通过注入抽象而可测试时。

主要能力与用法:

  • 时间与HTTP优先采用.NET内置抽象。.NET 8+用TimeProvider,注册builder.Services.AddSingleton(TimeProvider.System);HTTP用AddHttpClient<T>()注入HttpClient。TimeProvider 6-7通过Microsoft.Bcl.TimeProvider包使用。
  • 文件系统优先用System.IO.Abstractions,执行dotnet add package System.IO.Abstractions,注册AddSingleton<IFileSystem, FileSystem>(),测试用MockFileSystem。
  • 无内置抽象的类别(Environment、Console、Process)生成最小接口与委托实现,仅包装代码中实际调用的成员,无状态用AddSingleton,有状态用AddTransient。
  • 签名不可改的静态API采用AsyncLocal<T>的环境接缝(ambient seam),提供可还原的IDisposable覆盖作用域。

限制:目标已消费注入接口或内置抽象时不得再包一层;缺少DI包不等于必须用环境接缝,可实例化的类应优先构造函数注入;不得只包全部静态成员或凭空猜测。测试须证明依赖注入后的行为,时间测试要断言假时间推进后的结果。