【问题标题】:MOQ 'TestMethod(Action<int> callback)' and be able to 'call' callbackMOQ 'TestMethod(Action<int> callback)' 并且能够'call' 回调
【发布时间】:2010-10-26 11:06:52
【问题描述】:

哎呀,
我想模拟一个我知道我的服务会调用的回调。例如:

public interface ITestMe { void TestMethod(Action<int> callback); }

在应用程序中,当调用“TestMethod”时,我会在它运行后将回调方法传递给 hit,它会根据参数做一些事情。通常,在这种情况下,它是这样使用的:

...
testMe.TestMethod(
    (ret) => 
        {
        if(ret < 0)
            AddToErrorCollection(ret);
        else
            AddToSuccessCollection(ret);
        }
    );

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

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

有没有办法做到这一点?
这甚至是正确的方法吗?

【问题讨论】:

    标签: c# testing moq


    【解决方案1】:

    试试这个:

    myMock.Setup(m => m.TestMethod(It.IsAny<Action<int>>())).Callback<Action<int>>((action) => action(4));
    

    虽然这似乎是一种从本质上测试您的回调方法的相当复杂的方法。为什么不直接测试呢?

    【讨论】:

    • 这是真的,但是在这种情况下回调方法是一个匿名方法,所以不能直接测试(据我所知)......
    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多