MOQ'TestMethod(Action <int> callback)'并能够'调用'回调

Chr*_*don 4 c# testing moq

哦,
我想要模拟一个我知道我的服务会调用的回调.例如:

public interface ITestMe { void TestMethod(Action<int> callback); }
Run Code Online (Sandbox Code Playgroud)

在应用程序中,当调用'TestMethod'时,我会在运行后传递回调方法,这将根据参数执行某些操作.通常,在这种情况下,它使用如下:

...
testMe.TestMethod(
    (ret) => 
        {
        if(ret < 0)
            AddToErrorCollection(ret);
        else
            AddToSuccessCollection(ret);
        }
    );
Run Code Online (Sandbox Code Playgroud)

我想在MOQ中做的是调用带有一系列值的匿名方法,例如:

myMock.Setup(m => m.TestMethod(It.IsAny<Action<int>>())).... //Call that action!!??
Run Code Online (Sandbox Code Playgroud)

反正有吗?
这甚至是正确的方法吗?

Mar*_*ath 7

试试这个:

myMock.Setup(m => m.TestMethod(It.IsAny<Action<int>>())).Callback<Action<int>>((action) => action(4));
Run Code Online (Sandbox Code Playgroud)

虽然这似乎是一种相当复杂的方式来基本上测试你的回调方法.为什么不直接测试呢?