Ich benutze NSubstitute. Ich muss eine Klasse fälschen und kann den Unterschied von Substitute.For<...>()
und Substitute.ForPartsOf<...>
nicht ausgraben. Ich habe die Dokumentation schon gelesen, verstehe aber nicht, wo die beiden sich anders verhalten.NSubstitute: Unterschied zwischen Substitute.For <> und Substitute.ForPartsOf
1
A
Antwort
3
Substitute.For <>() schafft vollen Mock, während Substitute.ForPartsOf <> Teil Mock schafft. Zum Beispiel:
[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;
}
}
Allgemeinen ForPartsOf <> konkrete Umsetzung verwenden, wenn es ersetzt worden ist.
Als Referenz ist die in der Frage erwähnte Dokumentation [hier] (http://nsubstitute.github.io/help/partial-subs/). –