NSubstitute:Substitute.For<> 和 Substitute.ForPartsOf 之间的区别
NSubstitute: Difference between Substitute.For<> and Substitute.ForPartsOf
我正在使用 NSubstitute。我不得不伪造一个class,无法挖掘出Substitute.For<...>()
and Substitute.ForPartsOf<...>
的区别。我已经阅读了文档,但不明白两者的行为不同。
Substitute.For<>() 创建完整模拟,而 Substitute.ForPartsOf<> 创建部分模拟.例如:
[Test]
public void Test()
{
var person = Substitute.For<Person>();
person.GetAge().Returns(20);
var age = person.GetAge(); //returns 20
var name = person.GetName(); //returns empty string
var partialPerson = Substitute.ForPartsOf<Person>();
partialPerson.GetAge().Returns(20);
var age2 = partialPerson.GetAge(); //returns 20
var name2 = partialPerson.GetName(); //returns John
}
public class Person
{
public string Name { get; } = "John";
public int Age { get; } = 10;
public virtual int GetAge()
{
return Age;
}
public virtual string GetName()
{
return Name;
}
}
一般ForPartsOf<>如果没有被替换就使用具体实现
我正在使用 NSubstitute。我不得不伪造一个class,无法挖掘出Substitute.For<...>()
and Substitute.ForPartsOf<...>
的区别。我已经阅读了文档,但不明白两者的行为不同。
Substitute.For<>() 创建完整模拟,而 Substitute.ForPartsOf<> 创建部分模拟.例如:
[Test]
public void Test()
{
var person = Substitute.For<Person>();
person.GetAge().Returns(20);
var age = person.GetAge(); //returns 20
var name = person.GetName(); //returns empty string
var partialPerson = Substitute.ForPartsOf<Person>();
partialPerson.GetAge().Returns(20);
var age2 = partialPerson.GetAge(); //returns 20
var name2 = partialPerson.GetName(); //returns John
}
public class Person
{
public string Name { get; } = "John";
public int Age { get; } = 10;
public virtual int GetAge()
{
return Age;
}
public virtual string GetName()
{
return Name;
}
}
一般ForPartsOf<>如果没有被替换就使用具体实现