假设我有一个这样的事件处理程序:
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,因此我需要空值检查?
最佳答案
我可以用伪代码回答你,指出你可以做什么。
首先,您可以检查 sender 是否属于 MyClass 类型。
if(sender is MyClass)
然后在您的单元测试中,您可以发送两个模拟对象,一个类型为 MyClass,另一个类型为“MyClassFake”。使接口(interface)既使用又实现 Close() 方法。
做两个单元测试:
- 验证调用了 MyClass.Close()。
- 验证 MyClassFake.Close() 从未被调用。
Close() 只是一个例子,如果你有其他方法,你可以测试调用/不调用它们。
关于c# - 在 EventHandler 中对发送者对象进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9395078/