我已经使用了一种模式有一段时间,但我想知道我是否做得正确。我有一个控制器类监听事件并在事件被触发时执行一个私有方法。它的实现大概是这样的:
public class MyController
{
public MyController(IMyEventRaiser eventRaisingObject)
{
eventRaisingObject.MyEvent += HandleEvent;
}
private void HandleEvent(object sender, EventArgs args)
{
// SOME STUFF I WANT TO TEST!!
}
}
public class EventRaisingClass : IMyEventRaiser
{
public event EventHandler<EventArgs> MyEvent;
}
测试MyController.HandleEvent方法的唯一方式是创建一个stub:IMyEventRaiser来触发代码。
我不确定这种设计是否合适。一方面,我想将HandleEvent方法保持为private,以说明只有事件才能触发它。另一方面,如果私有方法包含关键业务逻辑,那么我觉得它应该是public,或者至少是internal,这也会使单元测试变得更加容易。
你们觉得呢?
谢谢,Morten