Модульное тестирование объекта отправителя в EventHandler - PullRequest
1 голос
/ 22 февраля 2012

Допустим, у меня есть обработчик событий, например:

public SomethingHappended_Handler(object sender, EventArgs e)
{
  var myobj = sender as MyClass();
  myobj.DoSomethingImportant();
}

Как я могу проверить, что myObj является типом MyClass? Я знаю, что отправитель всегда будет MyClass, но я просто подумал, что в безопасности мне понадобится:

if (myObj != null) //Close it

Если тип не MyClass, тогда myObj будет нулевым. Поскольку я знаю, что лучше всего проверять наличие ненулевого значения, как я могу создать модульный тест, чтобы доказать, что если я отправлю другой тип в качестве отправителя, отличного от MyClass, он упадет при вызове DoSomethingImportant и, следовательно, мне нужна проверка на нулевое значение?

1 Ответ

4 голосов
/ 22 февраля 2012

Я могу ответить вам в псевдокоде, чтобы указать, что вы можете сделать.

Прежде всего вы можете проверить, имеет ли отправитель тип MyClass.

if(sender is MyClass)

Затем в вашем юнит-тесте вы можете отправить два фиктивных объекта, один из которых типа MyClass, а другой - другого типа «MyClassFake». Создайте интерфейс и используйте и реализуйте метод Close ().

Провести два юнит-теста:

  1. Проверьте, что MyClass.Close () вызывается.
  2. Проверьте, что MyClassFake.Close () никогда не вызывается.

Close () является лишь примером, если у вас есть другие методы, вы можете проверить вызванные / не вызванные против них.

...