如何在 C# 中最小起订量受保护的属性

Ash*_*yal 6 c# unit-testing moq nbuilder

public class Business {  
    protected List<BusinessRulesDto> BusinessRules { get; set; }  
}
Run Code Online (Sandbox Code Playgroud)

我试过:

  1. businessMockObject.Protected().SetupSet<List<BusinessRulesDto>>("BusinessRules", ItExpr.IsAny<List<BusinessRulesDto>>()).Verifiable();
    
    Run Code Online (Sandbox Code Playgroud)
  2. var businessRulesDtoList = Builder<BusinessRulesDto>.CreateListOfSize(2).Build().ToList();  
    businessMockObject.Protected().SetupGet<List<BusinessRulesDto>>("BusinessRules").Returns(businessRulesDtoList);
    businessMockObject.Protected().SetupSet<List<BusinessRulesDto>>("BusinessRules", ItExpr.IsAny<List<BusinessRulesDto>>()).Verifiable();
    
    Run Code Online (Sandbox Code Playgroud)

我尝试了很多事情,但都没有成功。我可以模拟受保护的方法,但不能模拟受保护的属性。

如何模拟受保护的属性?

tch*_*dze 2

引擎盖下的模拟创建了目标的子类。当目标是具体类(而不是接口)时,您要模拟的方法应该是虚拟的,否则子类无法覆盖它并提供Setupped功能。