3

私は次のようなものを得ました:

public delegate void MyCallback(string name);

public class MyClass
{
    public virtual void MyFunc(string name, MyCallback callback)
    {
        ...
    }
}

今、moq で MyClass をモックするとき、MyFunc への最初の呼び出しでコールバックを呼び出し、その関数への 2 番目の呼び出しでイベントを発生させたいのですが、moq コールバックを使用した後、イベントを発生させることはできません!

私に何ができる ?

4

1 に答える 1

7

私の知る限り、Moq はこの種の連鎖をサポートしていませんが、簡単に回避できます。

var mock = new Mock<MyClass>();
int callsCount = 0;
mock
    .Setup(m => m.MyFunc(It.IsAny<int>(), It.IsAny<MyCallback>()))
    .Callback<int, MyCallback>(
        (i, callback) => 
        {
            if (callsCount++ == 0) callback("Some string");
            else mock.Raise(m => m.SomeEvent += null, EventArgs.Empty);
        });
于 2012-12-27T23:01:40.213 に答える