【发布时间】:2013-10-24 18:48:35
【问题描述】:
我最近一直在使用 Model-View-Presenter,当我觉得自己了解如何做事时,我最终会遇到一些我不太了解的新事物。
在我目前的情况下,我使用的是 PictureEdit(它基本上是作为 DevExpress 的 WinForms 控件的一部分的美化 PictureBox),虽然 PictureEdit 能够缩放和滚动,但它并不完全我有多喜欢它。
当您使用鼠标滚轮滚动时,它会导致图片上下平移。我希望它改为放大和缩小特定数量。所以我尝试了以下方法:
public class AlteredPictureEdit : PictureEdit
{
protected override void OnMouseWheel(MouseEventArgs e)
{
if (e.Delta > 0)
this.Properties.ZoomPercent += 10;
else
this.Properties.ZoomPercent -= 10;
}
}
因此,这改变了PictureEdit 的行为,以放大鼠标滚动而不是平移。但是因为我有做单元测试的想法,所以我想这样做,但我不知道怎么做。
在行为上,我会设计自己的演示者(被测单元)并为其提供依赖注入视图作为模拟。然后我可以使用模拟来引发MouseWheel 事件,然后断言ZoomPercent 值增加或减少。
通过继承 PictureEdit,我没有要进行单元测试的 Presenter 或要模拟的 View。我无法引发 OnMouseWheel 事件来测试 ZoomPercent 是否被更改。
如上所示,继承PictureEdit 是否正确?以及如何对我对该类所做的修改进行单元测试?
【问题讨论】:
标签: c# winforms inheritance moq mvp