[英]NSubstitute: Mocking properties
I created substitutes for Person
and AddressBook
classes in the unit Test. 我在单元Test中为Person
和AddressBook
类创建了替换。 The AddressBook
class contains properties of type Person
and name: SamplePerson
. 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);
}
I would like to assign mock variable of Person
type to propeties of mock variable of type AddressBook
. 我想的模拟变量分配Person
类型类型的模拟变量化子性质 AddressBook
。
Is this possible? 这可能吗?
IAddressBook.SamplePerson
property returns Person
implementation and not IPerson
interface, so your attempt to return IPerson
will not work. IAddressBook.SamplePerson
属性返回Person
实现而不是IPerson
接口,因此您尝试返回IPerson
将无效。
Either mock the Person
class 模拟Person
类
var personMock = Substitute.For<Person>();
var addressBookMock = Substitute.For<IAddressBook>();
addressBookMock.SamplePerson.Returns(personMock);
or return an actual instance. 或返回一个实际的实例。
var person = new Person();
var addressBookMock = Substitute.For<IAddressBook>();
addressBookMock.SamplePerson.Returns(person);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.