gpt4 book ai didi

c# - 使用 nunit 模拟测试事件处理

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:19 24 4
gpt4 key购买 nike

我需要创建一些单元测试来确认一个类的实例对另一个对象引发的事件做出适当的响应。传递“被监视”对象的模拟非常容易,但据我所知,nunit 中的模拟不提供让模拟引发事件的方法。

我正在考虑使用反射直接调用我正在测试的对象上的事件处理程序,将对模拟的引用作为“发送者”传递,但这并不能有效地测试我的对象是否正确地 Hook 了事件第一名(虽然现在想想,反正这个应该单独测试吧)。

这看起来确实有点像 hack,但我看不到另一种方法;有没有更好的办法?另外,模拟是否可以检查事件是否已 Hook ?

最佳答案

RhinoMock 代码非常适合验证订阅是否发生或验证事件是否已引发,但对于引发事件本身就不是那么好。

我也有类似的问题。我通过编写自己的小 stub 类来解决这个问题,该 stub 类实现事件聚合器接口(interface)并允许我从测试中引发事件。有时,编写您自己的测试代码比乱用模拟框架更容易,模拟框架并非真正设计用于执行此操作。

只有当它 Hook 到事件响应它们时,你的类的行为才有值(value),所以我认为单独测试这些行为没有多大意义。

关于c# - 使用 nunit 模拟测试事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com