我在单元测试中创建了Person和AddressBook类的替代品。AddressBook类包含类型为Person和name:SamplePerson的属性。
public interface IAddressBook
{
Person SamplePerson { get; set; }
}
public class AddressBook : IAddressBook
{
public Person SamplePerson { get; set; }
public AddressBook(Person samplePerson)
{
SamplePerson = samplePerson;
}
}
public interface IPerson
{
string GetName(string name);
}
public class Person : IPerson
{
public string GetName(string name)
{
return name;
}
}
public void TestMethod1()
{
var personMock = Substitute.For<IPerson>();
var addressBookMock = Substitute.For<IAddressBook>();
addressBookMock.SamplePerson.Returns(personMock); //not working
addressBookMock.SamplePerson = personMock; //not working
addressBookMock.SamplePerson = (Person)personMock; //not working
Assert.AreEqual(1, 1);
}我想将Person类型的模拟变量赋值给特性,类型为AddressBook类型的模拟变量。
这个是可能的吗?
发布于 2018-07-18 12:18:20
IAddressBook.SamplePerson属性返回Person实现,而不是IPerson接口,因此返回IPerson的尝试将无法工作。
要么模拟Person类
var personMock = Substitute.For<Person>();
var addressBookMock = Substitute.For<IAddressBook>();
addressBookMock.SamplePerson.Returns(personMock);或者返回一个实际的实例。
var person = new Person();
var addressBookMock = Substitute.For<IAddressBook>();
addressBookMock.SamplePerson.Returns(person);https://stackoverflow.com/questions/51401316
复制相似问题