C# 如何模拟接口中接口的只读属性已被模拟 公共接口IPerson { 薪水计算器薪水计算器{get;} } 公共接口ISalaryCalculator { } 公共类工资计算器:ISalaryCalculator { public int JoiningDate{get;set;} 公共工资计算器(整数合并日期) { 接合日期=接合日期; } } [测试夹具] 公共类人员配置 { 伊佩森人; [设置] 公共作废设置() { person=替换为(); } [测试] 公众人士() { person.SalaryCalculator.Returns(新的SalaryCalculator()); 或 person.SalaryCalculator.Returns(替换为()); } }

C# 如何模拟接口中接口的只读属性已被模拟 公共接口IPerson { 薪水计算器薪水计算器{get;} } 公共接口ISalaryCalculator { } 公共类工资计算器:ISalaryCalculator { public int JoiningDate{get;set;} 公共工资计算器(整数合并日期) { 接合日期=接合日期; } } [测试夹具] 公共类人员配置 { 伊佩森人; [设置] 公共作废设置() { person=替换为(); } [测试] 公众人士() { person.SalaryCalculator.Returns(新的SalaryCalculator()); 或 person.SalaryCalculator.Returns(替换为()); } },c#,nunit,nsubstitute,C#,Nunit,Nsubstitute,我尝试使用上述两个选项进行模拟,但都不起作用 NSSubstitute.Exceptions.CouldNotSetReturns由于类型不匹配异常: 无法为返回ISalaryCalculatorProxy类型的值 IPerson.get_SalaryCalculator(应为SalaryCalculator类型) 在这种情况下,我们如何进行模拟?异常指示模拟成员应该返回的内容 …期望类型工资计算器 返回实际的类,因为这是模拟接口成员返回的 public interface IPerson {

我尝试使用上述两个选项进行模拟,但都不起作用

NSSubstitute.Exceptions.CouldNotSetReturns由于类型不匹配异常: 无法为返回ISalaryCalculatorProxy类型的值 IPerson.get_SalaryCalculator(应为SalaryCalculator类型)


在这种情况下,我们如何进行模拟?

异常指示模拟成员应该返回的内容

…期望类型工资计算器

返回实际的类,因为这是模拟接口成员返回的

public interface IPerson
{
    SalaryCalculator SalaryCalculator { get; }
}

public interface ISalaryCalculator
{

}

public class SalaryCalculator : ISalaryCalculator
{
    public int  JoiningDate { get; set; }
    public SalaryCalculator(int joiningDate)
    {
        JoiningDate = joiningDate;
    }
}

[TestFixture]
public class PersonFixture
{
    IPerson person;
    [SetUp]
    public void SetUp()
    {
        person = Substitute.For<IPerson>();
    }

    [Test]
    public void TestPerson()
    {
        person.SalaryCalculator.Returns(new SalaryCalculator());
          OR
        person.SalaryCalculator.Returns(Substitute.For<ISalaryCalculator>());
    }
}
SalaryCalculator instance = new SalaryCalculator(1);

person.SalaryCalculator.Returns(instance);