Тестовые мероприятия с nunit

Я только запускаю с TDD и мог решить большинство проблем, с которыми я столкнулся самостоятельно. Но теперь я потерян: Как я могу проверить, запущены ли события? Я искал что-то как Assert.Raise или Assert.Fire но нет ничего. Google не был очень полезен, большинство хитов было предложениями как foo.myEvent += new EventHandler(bar); Assert.NotNull(foo.myEvent); но это ничего не доказывает.

Спасибо!

36
задан jdhurst 13 March 2017 в 03:19
поделиться

4 ответа

Проверить, были ли инициированы события, можно, подписавшись на это событие и установив логическое значение:

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);
47
ответ дан 27 November 2019 в 05:36
поделиться

Вы можете добавить свой собственный обработчик событий, который, например, увеличивает некоторое целочисленное поле в классе тестового примера. А затем проверьте, увеличилось ли поле.

0
ответ дан 27 November 2019 в 05:36
поделиться

@theburningmonk: Отсутствует ";". Исправлена версия:

bool eventFired = false;
foo.MyEvent += (s, e) => { eventFired = true; };
Assert.IsTrue(eventFired);

Ура! ;-)

1
ответ дан 27 November 2019 в 05:36
поделиться

Сам я этого не делал, но, возможно, вы могли бы добавить фиктивный обработчик события к событию, на которое вы хотите подписаться, и заставить его обновить локальную булеву переменную, чтобы после запуска метода вы могли проверить состояние этой булевой переменной, чтобы узнать, было ли запущено событие?

Что-то вроде:

bool eventFired = false;
foo.MyEvent += (s, e) => { eventFired = true };

Assert.IsTrue(eventFired);
1
ответ дан 27 November 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: