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

如何使用NSubstitute Mock只读属性DefaultHostName?

使用NSubstitute Mock WebSiteData的只读属性

可以用NSubstitute实现,但需要根据WebSiteData类的具体定义选择不同方式:

  • 如果DefaultHostName是虚属性(或类为抽象类/接口):直接通过NSubstitute的Returns方法指定返回值即可,示例代码:

    var mockSite = Substitute.For<WebSiteData>();
    mockSite.DefaultHostName.Returns("mocked-hostname.azurewebsites.net");
    
  • 如果类是密封类或属性为非虚成员:NSubstitute无法直接mock非虚成员,这时可以通过适配器模式间接实现:

    1. 定义对应接口抽象目标属性:
      public interface IWebSiteData
      {
          string DefaultHostName { get; }
      }
      
    2. 编写适配器类包装原WebSiteData:
      public class WebSiteDataAdapter : IWebSiteData
      {
          private readonly WebSiteData _original;
          public WebSiteDataAdapter(WebSiteData original) => _original = original;
          public string DefaultHostName => _original.DefaultHostName;
      }
      
    3. 业务代码依赖IWebSiteData接口,mock该接口即可:
      var mockSite = Substitute.For<IWebSiteData>();
      mockSite.DefaultHostName.Returns("mocked-hostname.azurewebsites.net");
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 08:31:09