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)。
在这种情况下我们如何嘲笑?
异常表明被模拟的成员应该返回什么。
...预期类型SalaryCalculator
替换实际的类,因为这是接口成员返回的内容。
person.SalaryCalculator.Returns(Substitute.For<SalaryCalculator>());