1

MVP パターンに従う小さなアプリケーションのテストを作成中です。

技術的には、コードの前にテストを作成する必要があることはわかっていますが、デモ アプリをすばやくスマートに作成する必要があったため、実際の開発に移る前にテストに戻ります。

つまり、プレゼンターをテストしようとしていますが、Internal.ExpectationException のために空のテストを実行することさえできません。

イベント割り当ての予期しない呼び出しで例外が発生します。

これがプレゼンタークラスです。

   public LBCPresenter(IView view, IModel model)
   {
        m_model = model;

        m_model.BatteryModifiedEvent += new EventHandler(m_model_BatteryModifiedEvent);
   }

モデル インターフェイス

    public interface IModel
    {
         event EventHandler BatteryModifiedEvent;
    }

そして、これがテストクラスです。何が欠けているのかわかりません。NMockにイベントを期待するように言いました...

    [TestFixture]
public class MVP_PresenterTester
{
    private Mockery mocks;
    private IView _mockView;
    private IViewObserver _Presenter;
    private IModel _mockModel;

    [SetUp]
    public void SetUp()
    {
        mocks = new Mockery();

        _mockView = mocks.NewMock<IView>();
        _mockModel = mocks.NewMock<IModel>();
        _Presenter = new LBCPresenter(_mockView, _mockModel);

    }

    [Test]
    public void TestClosingFormWhenNotDirty()
    {
         Expect.Once.On(_mockModel).EventAdd("BatteryModifiedEvent", NMock2.Is.Anything);

       //makes no difference if following line is commented out or not
       //mocks.VerifyAllExpectationsHaveBeenMet();
    }
}

テストを実行するたびに、同じ期待例外が発生します。

何か案は?

4

1 に答える 1

1

タイミングの問題だと思います-テストセットアップでプレゼンターコンストラクターを呼び出しています-これは、テストが EventAdd 期待値を設定する前にイベントの追加が発生していることを意味します。

呼び出しを EventAdd の期待値より下のプレゼンター コンストラクターに移動すると、機能するはずです。

于 2010-04-27T10:38:11.257 に答える