场景:我有一个类在其默认构造函数中订阅静态事件。因此,类成为IDisposable
,这样它就可以取消订阅静态事件并正确地进行垃圾回收。在使用RhinoMocks
的测试中模拟了这个类。它有复合部分子项,可能是也可能不是IDisposable
。
问题:由于Dispose方法被RhinoMocks
自动模拟,我正在泄漏这些对象。这会导致不同测试中的“随机”错误,因为仍然订阅的对象会对未正确设置的事件作出反应。
问题:我知道RhinoMocks有方法声明应该调用原始方法(CallOriginalMethod
),但我注意到RhinoMocks
有时会在我自己的声明之外创建代理。因此,我认为我不能阻止这些物体泄露。有没有办法解决这个问题?
答案 0 :(得分:0)
当你模拟一个类时,你可以传入额外的接口(或类型)来实现(例如IDisposable)
在单元测试的拆卸阶段,您可以将模拟对象转换为IDisposable类型并调用Dispose