Moles和System.Threading.ManualResetEvent

时间:2012-01-03 18:46:01

标签: .net moles

我们在单元测试中使用Moles取得了一些成功,这些类严重依赖于无法模拟的框架对象。我们遇到了System.Threading.ManualResetEventSystem.Threading.AutoResetEvent的障碍,但由于莫名其妙的原因,它似乎抵制了摩尔斯。更具体地说,System.Threading.Moles.MManualResetEvent.AllInstances.没有提供我们可以设置委托的方法。 System.Threading.ThreadSystem.Threading.MutexSystem.Threading.ManualResetEventSlim都具有Moles功能,这似乎表明支持应该可用;有谁知道为什么不是,或者我们做错了什么?

1 个答案:

答案 0 :(得分:1)

这并没有真正回答这个问题,但您可能希望使用以下流行的技术来模拟“unmockable”对象:定义一个接口,比如说IManualResetEvent,其中包含来自{{{}的必要方法和属性1}}和一个适配器类ManualResetEvent,它实现ManualResetEventAdapter并包装实际的IManualResetEvent。然后,在应用程序的任何位置使用ManualResetEvent。如果您已经在使用依赖注入框架,那么这是特别方便的,因为您可以指定始终将IManualResetEvent传递给需要ManualResetEventAdapter的类。