Mock内のイベントを発火する(C# WPF)

C#
public class TestClass 
{
    public TestClass(ITestMock mock)
    {
        mock.SomeEvent += (sender, e) => { //do something };
    }
} 

public class TestMock : ITestMock
{
    public event EventHnadler SomeEvent;
}


var testMock = new Mock<ITestMock>();
var testClass = new TestClass(testMock);

this.testMock.Raise(x => x.SomeEvent += null, args);

購読しているイベントによって、TestClassのプロパティが変化する場合などに、意図的にMockのイベントを発火させたい時がままあります。
そういう場合はMock.Raiseでイベントを発火できます。

x => x.SomeEvent こう書いたらダメなのに
x => x.SomeEvent += null こう書いたらOKなのは違和感ありますが仕方ないです。

上記の例では直接イベントを発火させていますが、通常はあるメソッドのコールバックで呼ばれると思います。なのでその場合は、

testMock.Setup(x => x.someMethod())
    .Callback(() => testMock.Raise(x => x.SomeEvent += null, args))

のように設定します。

C#
スポンサーリンク
Once and Only

コメント