サーチ…


自動スタブ特性

時には、クラスやインターフェースを模擬して、単純なgetterやsetterであるかのように振る舞います。これは共通の要件であるため、Moqは、モックのすべてのプロパティを設定して値を格納および取得するショートカットメソッドを提供します。

// SetupAllProperties tells mock to implement setter/getter funcationality
var userMock = new Mock<IUser>().SetupAllProperties();

// Invoke the code to test
SetPropertiesOfUser(userMock.Object);

// Validate properties have been set
Assert.AreEqual(5, userMock.Object.Id);
Assert.AreEqual("SomeName", userMock.Object.Name);

完全性のために、テストされるコードは以下の通りです

void SetPropertiesOfUser(IUser user)
{
    user.Id = 5;
    user.Name = "SomeName";
}

プライベートセッターによるプロパティ

プライベートセッターを持つクラスのモックを作成したいことがあります:

public class MockTarget
{
    public virtual string PropertyToMock { get; private set; }
}

または、ゲッターだけを定義するインターフェース:

public interface MockTarget
{
    string PropertyToMock { get; }
}

いずれの場合も、setterを無視して、単にgetterプロパティを設定して目的の値を返すことができます。

var mock = new Mock<MockTarget>();
mock.SetupGet(x => x.PropertyToMock).Returns("ExpectedValue");

Assert.AreEqual("ExpectedValue", mock.Object.PropertyToMock);


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