Moq
- Moqは、単体テスト用モックフレームワーク
- テスト用の代替オブジェクトを作成するための.NETライブラリ
- ネットワーク通信、データベースアクセスなど、外部依存の機能を代替するオブジェクトを作成できる
Usage
- Moqライブラリをプロジェクトに追加する
- モックを作成するクラスまたはインターフェースを定義する
- Moqを使って、モックのインスタンスを作成する
- モックのインスタンスを使って、テスト対象のクラスやメソッドをテストする
nugetからインストール
using Moq;
// テスト対象のインターフェースを定義する
public interface IDataAccess
{
int GetValue();
}
// テスト用のクラス
public class TestClass
{
private IDataAccess dataAccess;
public TestClass(IDataAccess dataAccess)
{
this.dataAccess = dataAccess;
}
public int TestMethod()
{
return dataAccess.GetValue() * 2;
}
}
// ユニットテスト用のクラス
[TestClass]
public class Test
{
[TestMethod]
public void TestTestMethod()
{
// モックのインスタンスを作成する
var mock = new Mock<IDataAccess>();
// GetValueメソッドをモックする
mock.Setup(x => x.GetValue()).Returns(10);
// テスト対象のインスタンスを作成する
var testClass = new TestClass(mock.Object);
// テストを実行する
var result = testClass.TestMethod();
// 結果を検証する
Assert.AreEqual(20, result);
}
}