当我编写一个需要检查异步事件是否被引发的单元测试时,我通常会做这样的事情:
[Test]
public void test()
{
var eventRaised = new ManualResetEvent(false);
subject.SomeEvent += (s, e) => { eventRaised.Set(); };
// Do something which should have triggered the event
Assert.True(eventRaised.WaitOne(5000), "Event was not raised.");
}
但是,在我目前的情况下,事件是基于来自外部系统的不同事件引发的,我刚刚发现我实际上得到了重复的事件,这并不好。我无法更改这个其他系统,所以我需要过滤掉我班级中的重复事件。幸运的是,有一种简单的方法可以检查它是否重复,但现在我想知道我应该如何更改单元测试以确保我的过滤正常工作。
您将如何编写一个单元测试来检查在采取某个动作后,某个事件只引发一次?