场景:我有一个在默认构造函数中订阅静态事件的类。因此,类被设为IDisposable,这样它就可以取消订阅静态事件并被正确地垃圾收集。这个类在使用RhinoMocks的测试中被模拟。它具有复合部件子项,这些子项可能是也可能不是IDisposable。
问题:由于Dispose方法被RhinoMocks自动模仿,我泄漏了这些对象。这会导致不同测试中的“随机”错误,因为仍然订阅的对象会对它们未正确设置的事件做出反应。
问:我知道RhinoMocks有一些方法可以声明原始方法应该被称为(CallOriginalMethod),但我注意到RhinoMocks有时会在我自己的声明之外创建代理。因此,我不认为我可以防止这些对象被泄漏。有没有办法解决这个问题?
发布于 2014-05-16 09:53:55
当你模拟一个类时,你可以传入额外的接口(或类型)来实现(例如IDisposable)
在单元测试的拆卸阶段,您可以将模拟对象强制转换为IDisposable类型并调用Dispose
https://stackoverflow.com/questions/23215728
复制相似问题