You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Moq迁移至NSubstitute:测试基类替代MockRepository.Create方案咨询

从Moq的MockRepository.Create切换到NSubstitute的正确方式
  • 别碰NSubstitute.Core.SubstituteFactory,这是框架内部实现类,官方不对外暴露,既没有公开文档支持,后续版本还可能随意变更,完全不适合外部代码直接调用。
  • NSubstitute本身没有类似Moq中MockRepository的集中管理模式,直接用Substitute.For<TMock>()就能替代_mockRepository.Create<TMock>()的功能,生成对应类型的模拟实例。

代码示例

原来的Moq初始化代码:

mockInstance = _mockRepository.Create<TMock>();

替换成NSubstitute的写法:

mockInstance = Substitute.For<TMock>();

如果你的TMock需要传入构造参数(比如带有非默认构造函数),可以直接在方法中传入参数:

// 假设TMock需要一个int类型的构造参数
mockInstance = Substitute.For<TMock>(123);

补充说明

NSubstitute的设计思路和Moq不同,它不需要通过Repository来管理模拟对象,直接通过静态方法Substitute.For系列就能创建实例,同时支持对接口、带有虚方法/抽象成员的类进行模拟。如果之前用MockRepository是为了统一设置行为(比如严格模式),NSubstitute可以通过全局配置或者单独对实例设置验证规则来实现。

内容的提问来源于stack exchange,提问作者orgg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:17:07