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有任何附加到它的东西.
有任何想法吗?
谢谢.
不要问你用这个假装什么,测试和枚举注册事件的唯一方法就是将它们注册到你自己的集合中。
看这个例子:
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。
你能实现这样的事情吗?