У меня есть следующий класс:Moq: настройка свойства без сеттера?
public class PairOfDice
{
private Dice d1,d2;
public int Value
{
get { return d1.Value + d2.Value; }
}
}
Теперь я хотел бы использовать в моем тесте, который возвращает значение 1 в PairOfDice
, хотя я использую случайные значения в моих реальных кубиков:
[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);
}
К сожалению, я получите ошибку Invalid setup on non-overridable member
. Что я могу сделать в этой ситуации?
Обратите внимание, что это моя первая попытка реализовать Unit-Tests.
Есть ли недостаток, устанавливающий это свойство в виртуальном? – Sven
Только если вы рассматриваете подклассы 'override'-ing, которые используют риск. В принципе ничего примечательного, если это супер-безопасная функция, вы не можете доверять другим классам, чтобы получить право, однако те, которые вы не должны издеваться, так как они не будут публичными. – Aren
Этот ответ теперь устарел, так как Moq способен высмеивать не виртуальные свойства. – krillgar