c# - Moq - 设置模拟到第一次回调和第二次引发事件

标签 c# events callback moq

我得到的东西看起来像这样:

public delegate void MyCallback(string name);

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

现在,当我用最小起订量模拟 MyClass 时,我希望第一次调用 MyFunc 来调用回调,然后第二次调用该函数来引发一些事件,但是在使用最小起订量回调之后我无法引发事件!

我能做什么?

最佳答案

据我所知,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);
        });

关于c# - Moq - 设置模拟到第一次回调和第二次引发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042234/

相关文章:

C# Asp.net无法连接到phpmyadmin

spring - ApplicationEventPublisher 没有被 Autowiring 到组件中

javascript - dojox.enhancedGrid 插件 IndirectSelection 中的 dojo.connect

javascript - 您存储返回回调的回调的模式是否有名称?

javascript - 如何避免所附片段中 JavaScript 中的代码重复?

c# - 无法让外部连接在 EF 中工作

c# - 在 C# 中将自定义类对象添加到列表框

c# - 如何识别哪个控件生成了 Click 事件?

Python 回调函数占位符?

c# - 使用 Linq 动态查询数据集