Допустим, у меня есть EventHandler так:Модульное тестирование объект отправителя в EventHandler
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, и поэтому мне нужна нулевая проверка?
Что не так со стандартным типом проверки if (myobj == null) ... – Lloyd
@Lloyd Вам все равно нужно отдать отправителя, чтобы он мог называть методы на нем. – Jon
. Вы в основном просите тест, чтобы увидеть «как» делает то, что он должен делать - ИМХО вам не нужно «единичный тест» на уровне того, работает ли C# так, как он документирован. «как» просто не будет передаваться, если объект, который вы пытаетесь выполнить, относится к этому классу или подтипу этого класса. Если вы действительно хотите, просто напишите еще один фрагмент кода, который безопасно использует «как», или проверит тип, используя ключевое слово «is». Или обработчик событий - это всего лишь метод в классе, напишите для него тест, как и любой класс. –