如何模拟接口中接口的只读属性已被模拟

问题描述 投票:0回答:1
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>());
    }
}

我尝试使用以上两个选项来模拟,但不起作用,

NSubstitute.Exceptions.CouldNotSetReturnDueToTypeMismatchException:无法返回以下类型的值ISalaryCalculatorProxyIPerson.get_SalaryCalculator(预期类型SalaryCalculator)。

在这种情况下我们如何嘲笑?

c# nunit nsubstitute
1个回答
0
投票

异常表明被模拟的成员应该返回什么。

...预期类型SalaryCalculator

替换实际的类,因为这是接口成员返回的内容。

person.SalaryCalculator.Returns(Substitute.For<SalaryCalculator>());
© www.soinside.com 2019 - 2024. All rights reserved.