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

使用NSubstitute如何判断类或接口实例是否为Mock对象

NSubstitute 校验实例是否为Mock对象的实现方案

在NSubstitute中可以通过内置API实现和FakeItEasy Fake.IsFake()完全等价的校验逻辑,具体实现可根据你使用的版本选择:

方案1:适配所有NSubstitute版本的通用写法

引用NSubstitute.Core命名空间,调用上下文的动态代理校验方法:

using NSubstitute.Core;

// 校验逻辑和Fake.IsFake(myVariable)完全一致
if (!SubstitutionContext.Current.IsDynamicProxy(myVariable))
{
    Error();
}

方案2:NSubstitute 5.0+ 版本简化写法

5.0及以上版本新增了公开扩展方法,不需要额外引用Core命名空间:

if (!myVariable.IsSubstitute())
{
    Error();
}
  • 上述两种方法对Serilog ILoggerFactory、ILogger这类接口的Mock实例均生效,只要是NSubstitute生成的代理对象就会返回true,真实实现类实例会返回false。
  • 校验逻辑不会修改Mock对象的配置状态,不会影响后续的调用断言。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:27:04