xUnit:如何声明 EventHandler<EventArgs> 类型的其他事件
xUnit: how to Assert other event of types then EventHandler<EventArgs>
我是单元测试的初学者,我已经在网上搜索了几个小时,但我仍然找不到我这个简单问题的答案。
我有一个 class 事件如下:
event Action<ITagData> OnTagHandled
现在我想编写一个单元测试来断言事件是否已引发,但是当我写如下内容时:
Assert.Raises<EventArgs>(handler => m_rssiHander.OnTagHandled += handler,
handler => m_rssiHander.OnTagHandled -= handler, () => { });
我收到如下错误:
Cannot implicitly convert type System.EventHandler to System.Action
谁能告诉我如何断言 Action<T>
类型的事件?
因为handler
是EventHandler<EventArgs>
的类型
所以 m_rssiHander.OnTagHandled += handler
将不起作用
您将必须更改:
event Action<ITagData> OnTagHandled
至
event Action<EventArgs> OnTagHandled
让它工作
或任何 child class 的 EventArgs 并继承 ITagData 接口
例如
class TagDataEventArgs: EventArgs, ITagData {}
并将其用作:
event Action<TagDataEventArgs> OnTagHandled
并断言:
Assert.Raises<TagDataEventArgs>(handler => m_rssiHander.OnTagHandled += handler,
handler => m_rssiHander.OnTagHandled -= handler, () => { });
最后我决定这样做:
bool wasEventRaised = false;
m_rssiHandler.OnTagHandled += data => { wasEventRaised = true;};
// Act
m_rssiHandler.ProcessTag(m_tag);
// Assert
Assert.True(wasEventRaised);
我是单元测试的初学者,我已经在网上搜索了几个小时,但我仍然找不到我这个简单问题的答案。
我有一个 class 事件如下:
event Action<ITagData> OnTagHandled
现在我想编写一个单元测试来断言事件是否已引发,但是当我写如下内容时:
Assert.Raises<EventArgs>(handler => m_rssiHander.OnTagHandled += handler,
handler => m_rssiHander.OnTagHandled -= handler, () => { });
我收到如下错误:
Cannot implicitly convert type System.EventHandler to System.Action
谁能告诉我如何断言 Action<T>
类型的事件?
因为handler
是EventHandler<EventArgs>
的类型
所以 m_rssiHander.OnTagHandled += handler
将不起作用
您将必须更改:
event Action<ITagData> OnTagHandled
至
event Action<EventArgs> OnTagHandled
让它工作
或任何 child class 的 EventArgs 并继承 ITagData 接口
例如
class TagDataEventArgs: EventArgs, ITagData {}
并将其用作:
event Action<TagDataEventArgs> OnTagHandled
并断言:
Assert.Raises<TagDataEventArgs>(handler => m_rssiHander.OnTagHandled += handler,
handler => m_rssiHander.OnTagHandled -= handler, () => { });
最后我决定这样做:
bool wasEventRaised = false;
m_rssiHandler.OnTagHandled += data => { wasEventRaised = true;};
// Act
m_rssiHandler.ProcessTag(m_tag);
// Assert
Assert.True(wasEventRaised);