Mam następujące klasy:Moq: Ustaw właściwość bez ustawiacza?
public class PairOfDice
{
private Dice d1,d2;
public int Value
{
get { return d1.Value + d2.Value; }
}
}
Teraz chciałbym użyć PairOfDice
w moim teście, która zwraca wartość 1, chociaż używam wartości losowych w moich prawdziwych kości:
[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);
}
Niestety uzyskać błąd Invalid setup on non-overridable member
. Co mogę zrobić w tej sytuacji?
Proszę zauważyć, że jest to moja pierwsza próba wdrożenia testów jednostkowych.
Czy jest wada ustawienie tej właściwości na wirtualną? – Sven
Tylko jeśli uważasz podklasy za "nadpisanie", to funkcja jest zagrożeniem. Zasadniczo nic wartego uwagi, chyba że jest to super bezpieczna funkcja, której nie można ufać innym klasom, aby uzyskać prawo, jednak ci, którzy i tak nie powinni być kpiną, ponieważ nie byliby publiczni. – Aren
Ta odpowiedź jest już nieaktualna, ponieważ Moq może udawać właściwości inne niż wirtualne. – krillgar