Easily Unit Testing Event Handlers
6035 단어 unit test
1: private bool statsUpdated = false; 2: private ManualResetEvent statsUpdatedEvent = new ManualResetEvent(false); 3: 4: [Test] 5: public void CheckStats() 6: { 7: BrickDatabase db = new BrickDatabase(tempFolder, maxCacheAge); 8: 9: statsUpdated = false; 10: statsUpdatedEvent.Reset(); 11: 12: db.InventoryStatsUpdated += new EventHandler(db_InventoryStatsUpdated); 13: db.DoSomethingThatFiresEvent(); 14: 15: statsUpdatedEvent.WaitOne(); 16: 17: Assert.IsTrue(statsUpdated); 18: } 19: 20: void db_InventoryStatsUpdated(object sender, EventArgs e) 21: { 22: statsUpdated = true; 23: statsUpdatedEvent.Set(); 24: } There are a number of things wrong with this:
Here’s a better way of doing it, using anonymous methods in C# 2.0:
1: [Test] 2: public void CheckStats() 3: { 4: BrickDatabase db = new BrickDatabase(tempFolder, maxCacheAge); 5: bool statsUpdated = false; 6: ManualResetEvent statsUpdatedEvent = new ManualResetEvent(false); 7: 8: db.InventoryStatsUpdated += delegate 9: { 10: statsUpdated = true; 11: statsUpdatedEvent.Set(); 12: }; 13: 14: db.DoSomethingThatFiresEvent(); 15: 16: statsUpdatedEvent.WaitOne(5000,false); 17: 18: Assert.IsTrue(statsUpdated); 19: } Improvements?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Jest][유닛 테스트] (2) 테스트 코드로 디버깅해보자! 예약 날짜 비활성화 오류, 테스트 코드로 해결하기상황에 따라 예상치 못한 오류가 있을 수 있는 부분이라고 생각했고, 이 참에 아예 테스트를 작성한 뒤 명확하게 로직 자체를 검사해가면서 확실하게 의도한 대로 동작하도록 만들어보기로 결심했다. 예약 기간 선택 시 예약...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.