Podczas implementacji testów jednostkowych zachodzi czasami potrzeba napisania kodu weryfikującego zachowanie obiektów po wystąpieniu zdarzeń. Scenariusz taki jest wspierany przez tzw "mocking frameworks". Za świetny przykład może służyć odświeżony w wersji 3.5 mechanizm biblioteki Rhino.Mocks ze swoją metodą rozszerzającą Raise.
Co jednak w sytuacji odwrotnej, gdy nie chcemy badać reakcji na zdarzenie, a jedynie upewnić się, że zostało ono wywołane? Sposób przedstawiony tutaj ("Test Event Was Raised") nie bardzo mi się podoba. Wystarczyło jednak chwilę pomyśleć żeby strząchnąć zaciemnienie z ciemienia i napisać:
1: var someClass = new SomeClass();
2: bool eventRaised = false;
3: someClass.TestEvent += delegate
4: {
5: eventRaised = true;
6: };
7:
8: someClass.ShouldRaise();
9: Assert.IsTrue(eventRaised);
Mi to wygląda bardziej "kompaktowo".
Oceń i podyskutuj na http://zine.net.pl!