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”.