1

私は最近 Model-View-Presenter を使用していますが、やり方を理解したような気がすると、よくわからない新しいことに出くわします。

私の現在のケースでは、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で、単体テストするプレゼンターやモックするビューがありません。OnMouseWheel変更されたイベントをテストするために発生させることはできませんZoomPercent

上記のように、これを行う適切な方法を継承してPictureEditいますか? また、クラスに加えた変更を単体テストするにはどうすればよいですか?

4

1 に答える 1

0

独自のクラスから継承するテスト クラスをいつでも使用できます。この場合、パブリック メソッドを公開して呼び出しを保護されたメソッドに転送し、それをテストに使用します。

public class AlteredPictureEditTester : AlteredPictureEdit
{
    public void RaiseMouseWheelEvent(MouseEventArgs e)
    {
         OnMouseWheel(e);
    }
}

このような状況で私が通常行うことは、実際にはテストクラス内でそのクラスを宣言してスコープを制限することです。

于 2013-10-24T19:36:42.643 に答える