gpt4 book ai didi

c# - 测试事件是否分配了 EventHandler

转载 作者:太空狗 更新时间:2023-10-29 23:35:49 25 4
gpt4 key购买 nike

我想测试一个类是否有一个分配给事件的 EventHandler。基本上我使用我的 IoC 容器为我连接 EventHandlers,我想检查它们是否被正确分配。真的,我正在测试我的 IoC 配置。

[Test]
public void create_person_event_handler_is_hooked_up_by_windsor()
{
IChangePersonService changePersonService = IoC.Resolve<IChangePersonService>();

// check that changePersonService.PersonCreated has a handler attached
}

不过,我不确定如何测试 changePersonService.PersonCreated 是否附加了任何内容。

有什么想法吗?

谢谢。

最佳答案

不质疑你用这个假装是什么,测试和枚举注册事件的唯一方法是将它们注册到你自己的集合中。

看这个例子:

public class MyChangePersonService : IChangePersonService
{
private IList<EventHandler> handlers;

private EventHandler _personEvent;

public event EventHandler PersonCreated
{
add
{
_personEvent += value;
handlers.Add(value);
}

remove
{
_personEvent -= value;
handlers.Remove(value);
}
}

public IList<EventHandler> PersonEventHandlers { get { return handlers; } }

public MyChangePersonService()
{
handlers = new List<EventHandler>();
}

public void FirePersonEvent()
{
_personEvent(this, null);
}
}

然后您可以使用属性 PersonEventHandlers 访问已注册的处理程序。

你能实现这样的东西吗?

关于c# - 测试事件是否分配了 EventHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/419967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com