SuperAPI AI 工具集

dotnet-testing-nsubstitute-mocking

测试与质量

查看项目

更新于 10-15 23:45

技能介绍

用途:在 .NET 单元测试中用 NSubstitute 建立测试替身(Mock、Stub、Spy),隔离数据库、文件系统、网络、时间等外部依赖,专注验证业务逻辑。

主要能力:支持 Substitute.For 创建接口、类(需虚成员)及多重接口替身;用 Returns 设定返回值、序列值与条件返回值;用 Throws 抛出同步或异步异常;用 Arg.Any、Arg.Is、Arg.Do 做参数匹配与捕获;用 Received、DidNotReceive、ReceivedWithAnyArgs、Received.InOrder 验证调用次数与顺序。资料还按 Gerard Meszaros 定义区分 Dummy、Stub、Fake、Spy、Mock 五类替身。

使用方式:安装 NSubstitute 5.3.0、xunit 2.9.3、Microsoft.Extensions.Logging 9.0.0、AwesomeAssertions 9.4.0,并引入 NSubstitute、NSubstitute.ExceptionExtensions 等命名空间。测试遵循 3A 模式,替身设置集中在构造函数或 Arrange 段,验证用 Received/DidNotReceive 明确断言。

适用场景:依赖注入测试、异步方法测试、ILogger 验证、复杂设置管理,以及需要隔离外部 API、仓储、文件系统、时间与随机数依赖的单元测试。

限制与注意:应针对接口而非具体类建立替身,除非成员为 virtual;避免模拟值类型(如 DateTime),改用 IDateTimeProvider 等抽象;避免过度验证内部实现细节与设置过多替身。资料未提供收费、价格或平台信息。