Moq: Setup ein property ohne setter?
Habe ich folgende Klasse:
public class PairOfDice
{
private Dice d1,d2;
public int Value
{
get { return d1.Value + d2.Value; }
}
}
Nun würde ich gerne eine PairOfDice
in meinem test liefert den Wert 1, obwohl ich die Verwendung zufälliger Werte in meiner realen Würfel:
[Test]
public void DoOneStep ()
{
var mock = new Mock<PairOfDice>();
mock.Setup(x => x.Value).Return(2);
PairOfDice d = mock.Object;
Assert.AreEqual(1, d.Value);
}
Leider bekomme ich eine Invalid setup on non-overridable member
Fehler. Was kann ich tun in dieser situation?
Bitte beachten Sie, dass dies ist mein Erster Versuch, implementieren von Unit-Tests.
InformationsquelleAutor der Frage Sven | 2010-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist, weil es nicht
virtual
. Nicht, weil Sie nicht über eine setter.Moq können nicht bauen einen Proxy, weil es nicht überschreiben Ihre Immobilie. Sie müssen entweder über eine Schnittstelle, die virtuelle Methode oder einer abstrakten Methode.
InformationsquelleAutor der Antwort Aren
Können Sie
.SetupGet
auf Ihr mock-Objekt.zB.
Sehen hier für weitere details.
InformationsquelleAutor der Antwort Jim Johnson