2010-03-11 4 views
1

MVP 패턴을 따르는 작은 응용 프로그램에 대한 테스트를 작성하는 중입니다.Nmock2 및 이벤트 기대

기술적으로 코드 앞에 테스트를 작성 했어야한다는 것을 알고 있지만, 데모 앱을 빠르게 똑똑히해야하기 때문에 실제 개발로 옮기기 전에 테스트로 돌아갑니다.

간단히 말해 발표자 테스트를 시도하고 있지만 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(); 
    } 
} 

나는 시험을 실행할 때마다 동일한 기대 Exception을 얻는다.

아이디어가 있으십니까?

답변

1

타이밍 문제라고 생각합니다. 테스트 설정에서 발표자 생성자를 호출하고 있습니다. 즉, 테스트가 EventAdd 예상을 설정하기 전에 이벤트 추가가 발생했음을 의미합니다.

EventAddExection 아래의 표현 자 생성자로 호출을 이동하면