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에 따라 라이센스가 부여됩니다.