2

私はmoqと私の問題のTfsプロパティ(ItemSet)、moqの使い方を使用しています.ItemSetは...

public sealed class ItemSet
{
    public Item[] Items { get; }
    public string Pattern { get; }
    public string QueryPath { get; }

    public override string ToString();
}

サンプル、

ItemSet allItems = versionControl.GetItems(@"$/");

ユニットテストとモッキングで書く方法は?

4

2 に答える 2

2

Moq を使用してシール クラスをモックすることはできません。

封印された TFS クラスをラップする一連のプロキシを作成できます。各プロキシは、テストの作成に使用できる抽象化に基づいています。

多くの場合 (特にコレクションのようなオブジェクトの場合)、sealed クラスを使用し、テスト ビルダークラスなどを使用して、すべての依存関係をインスタンス化し、すべてをプラグインする手間を省くことができます。あなたの場合、すべてのアイテム、パターン、およびクエリパス (およびこれらのそれぞれのすべての依存関係がある場合) を作成し、テストセーフな値で実際のアイテムセットを作成する必要があります。

于 2012-05-21T17:26:40.247 に答える
1

このように、シールされていないクラスで SetupGet メソッドを使用できます。

Mock<ItemSet> itemSetMock = new Mock<ItemSet>();
itemSetMock.SetupGet(x => x.Items).Returns(someItems);

Moq がシールされたクラスをどのように処理するかはわかりませんが、単体テストでは具象クラスの代わりに抽象化をモックすることをお勧めします。

于 2012-05-16T07:48:42.773 に答える