28. 28Copyright (c) 2017 Eiwa System Management, Inc.2017/3/11
サンプル テスト対象クラス
public interface ICalc
{
int Sub(int v1, int v2);
}
public class Calc : ICalc
{
// Stub化されるメソッドは、オーバーライド可能(virtual)にしておく
public virtual int Add(int v1, int v2)
{
return 100;
}
public int Sub(int v1, int v2)
{
throw new NotImplementedException();
}
}
Calc.cs
29. 29Copyright (c) 2017 Eiwa System Management, Inc.2017/3/11
サンプル Setup、Returns
[Fact(DisplayName = "引数に値を指定してスタブ化")]
public void TestStubExactMatch()
{
var calcMock = new Mock<Calc>(); // Calcクラスをラップする
// CalcクラスのAddメソッドが、引数「1」「2」で呼ばれたら「3」を返す
calcMock.Setup(m => m.Add(1, 2)).Returns(3);
Calc c = calcMock.Object; // Calc形のインスタンスを取り出す
Assert.Equal(3, c.Add(1, 2)); // 指定した呼び出しなので、「3」を返す
Assert.Equal(0, c.Add(2, 1)); // 設定した引数の組み合わせ以外は「0」を返す
}
MoqStubSample.cs