私は次のクラスを持っています:
public class PairOfDice
{
private Dice d1,d2;
public int Value
{
get { return d1.Value + d2.Value; }
}
}
ここで、テストでPairOfDice
を使用して、値1を返しますが、実際のサイコロではランダムな値を使用します。
[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
エラー。この状況で私は何ができますか?
ユニットテストを実装するのはこれが初めてであることに注意してください。
モックオブジェクトで.SetupGet
を使用できます。
例えば。
[Test]
public void DoOneStep ()
{
var mock = new Mock<PairOfDice>();
mock.SetupGet(x => x.Value).Returns(1);
PairOfDice d = mock.Object;
Assert.AreEqual(1, d.Value);
}
詳細については、 ここ を参照してください。
あなたの問題はそれがvirtual
ではないからです。セッターがいないからではありません。
Moqはプロパティを上書きできないため、プロキシを構築できません。インターフェイス、仮想メソッド、または抽象メソッドのいずれかを使用する必要があります。