单元测试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将为null。正如我所知,最好测试非null,我如何创建一个单元测试来证明如果我作为MyClass以外的发送方发送不同的类型,它将无法调用DoSomethingImportant,因此我需要null检查?

我可以用伪代码回答你,指出你可以做什么。

首先,您可以检查发件人是否属于MyClass类型。

if(sender is MyClass)

然后在单元测试中,您可以发送两个mock对象,一个是MyClass类型,另一个是"MyClassFake"类型。使一个接口同时使用并实现Close()方法。

进行两次单元测试:

  1. 验证是否调用了MyClass.Close()
  2. 验证是否从未调用过MyClassFake.Close()

Close()只是一个例子,如果你有其他方法,你可以针对它们测试调用/未调用。

最新更新