サーチ…


備考

Moqは.Net用の模擬ライブラリです。ユニットテストを容易にするために、依存関係との対話をシミュレートして検証することができます。

Moqの異なるバージョンのリリースノートはここにあります

インストールまたはセットアップ

  1. Moqへの参照を追加するプロジェクトを選択します。
  2. このプロジェクトのためにオープンナゲット。
  3. 検索ボックスに「moq」と入力するより「Browse」を選択してください。
  4. 「Moq」を選択し、「インストール」をクリックします。

ここに画像の説明を入力

これらの手順を実行すると、Moqパッケージがインストールされ、選択したプロジェクト参照にそのパッケージへの参照が追加されます。これらのステップを完了した後は、単体テストプロジェクトでMoqをテストクラスファイルに宣言するだけで使用できます。

Using Moq;

Moqsはテストダブルです

モックはテストダブルとして意味され、モックとのやりとりを検証したり、テストしているシステムを置き換えることはできません。例は、Moqの機能を次のように示しています。

// Create the mock
var mock = new Mock<IMockTarget>();

// Configure the mock to do something
mock.SetupGet(x => x.PropertyToMock).Returns("FixedValue");

// Demonstrate that the configuration works
Assert.AreEqual("FixedValue", mock.Object.PropertyToMock);

// Verify that the mock was invoked
mock.VerifyGet(x => x.PropertyToMock);

この例はモックの使用に関連するステップを示していますが、モックが正しくセットアップされて使用されていること以外は何も実際にテストしないことを覚えておくことが重要です。モックを使用する実際のテストでは、テスト対象のシステムにモックが供給されます。次の方法をテストするには:

public class ClassToTest
{
    public string GetPrefixedValue(IMockTarget provider)
    {
        return "Prefixed:" + provider.PropertyToMock;
    }
}

依存インタフェースのモックを作成することは可能です:

public interface IMockTarget
{
    string PropertyToMock { get; }
}

実際にGetPrefixedValueメソッドの動作を検証するテストを作成するには、 GetPrefixedValueようにします。

// Create and configure the mock to return a known value for the property
var mock = new Mock<IMockTarget>();
mock.SetupGet(x => x.PropertyToMock).Returns("FixedValue");

// Create an instance of the class to test
var sut = new ClassToTest();

// Invoke the method to test, supplying the mocked instance
var actualValue = sut.GetPrefixedValue(mock.Object);

// Validate that the calculated value is correct
Assert.AreEqual("Prefixed:FixedValue", actualValue);

// Depending on what your method does, the mock can then be interrogated to
// validate that the property getter was called.  In this instance, it's
// unnecessary since we're validating it via the calculated value.
mock.VerifyGet(x => x.PropertyToMock);


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow