测试事件是否已分配EventHandler

mat*_*ole 5 c# events unit-testing event-handling

我想测试一个类有一个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
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何测试changePersonService.PersonCreated有任何附加到它的东西.

有任何想法吗?

谢谢.

bru*_*nde 2

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

看这个例子:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后您可以使用 prop 访问注册的处理程序PersonEventHandlers

你能实现这样的事情吗?