Я только запускаю с TDD и мог решить большинство проблем, с которыми я столкнулся самостоятельно. Но теперь я потерян: Как я могу проверить, запущены ли события? Я искал что-то как Assert.Raise
или Assert.Fire
но нет ничего. Google не был очень полезен, большинство хитов было предложениями как foo.myEvent += new EventHandler(bar); Assert.NotNull(foo.myEvent);
но это ничего не доказывает.
Спасибо!
Проверить, были ли инициированы события, можно, подписавшись на это событие и установив логическое значение:
var wasCalled = false;
foo.NyEvent += (o,e) => wasCalled = true;
...
Assert.IsTrue(wasCalled);
Из-за запроса - без лямбда-выражений:
var wasCalled = false;
foo.NyEvent += delegate(o,e){ wasCalled = true;}
...
Assert.IsTrue(wasCalled);
Вы можете добавить свой собственный обработчик событий, который, например, увеличивает некоторое целочисленное поле в классе тестового примера. А затем проверьте, увеличилось ли поле.
@theburningmonk: Отсутствует ";". Исправлена версия:
bool eventFired = false;
foo.MyEvent += (s, e) => { eventFired = true; };
Assert.IsTrue(eventFired);
Ура! ;-)
Сам я этого не делал, но, возможно, вы могли бы добавить фиктивный обработчик события к событию, на которое вы хотите подписаться, и заставить его обновить локальную булеву переменную, чтобы после запуска метода вы могли проверить состояние этой булевой переменной, чтобы узнать, было ли запущено событие?
Что-то вроде:
bool eventFired = false;
foo.MyEvent += (s, e) => { eventFired = true };
Assert.IsTrue(eventFired);