我最近一直在使用 Model-View-Presenter,当我觉得我了解如何做事时,我最终会遇到一些我不太了解的新事物。
在我目前的情况下,我使用的是 a PictureEdit
(它基本上是PictureBox
DevExpress 的 WinForms 控件的一部分),虽然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
如上所示,是否继承了解决此问题的正确方法?以及如何对我对班级所做的修改进行单元测试?