如何测试是否订阅了某个事件

时间:2013-09-16 18:41:15

标签: c# wpf

我有一个附加行为,订阅了TabItem的IsVisibleChanged方法。我想编写一个单元测试来验证是否正在附加行为中订阅此事件。

这样的事情:

Assert.IsTrue(myTabItem.IsVisibleChanged != null);

我不能这样做,因为我的测试不在TabItem类之内,所以它不能测试事件的相等性。

我也试过这个:

private class MyTabItem : TabItem
{
    public bool IsVisibleChangedNull()
    {
        return base.IsVisibleChanged == null;
    }
}

这也行不通。有没有人有一个很好的方法来测试它?

1 个答案:

答案 0 :(得分:2)

验证事件是否成功订阅的最简单方法是执行一些操作,触发事件并在事件处理程序中包含代码,以便运行以使测试成功:

bool fired = false;

foo.SomeEvent += ()=> fired = true;
foo.DoSomethingToFireEvent();

Assert.IsTrue(fired);