Родинки и System.Threading.ManualResetEvent - PullRequest
2 голосов
/ 03 января 2012

Мы добились определенного успеха, используя Moles в модульных тестах для нескольких классов, которые сильно зависят от объектов каркаса, которые не могут быть смоделированы.Однако мы столкнулись с некоторым препятствием на пути к System.Threading.ManualResetEvent и System.Threading.AutoResetEvent, которые, по-видимому, сопротивляются кротам по необъяснимым причинам.Более конкретно, System.Threading.Moles.MManualResetEvent.AllInstances. не предоставляет методов, для которых мы могли бы установить делегата.System.Threading.Thread, System.Threading.Mutex и System.Threading.ManualResetEventSlim - все они способны на моли, что, по-видимому, указывает на то, что поддержка должна быть доступной;Кто-нибудь знает, почему это не так, или что мы делаем не так?

1 Ответ

1 голос
/ 03 января 2012

Это не совсем ответ на вопрос, но вы можете использовать следующую, популярную технику для насмешки «немоделируемых» объектов: Определите интерфейс, скажем IManualResetEvent, который содержит необходимые методы и свойства из ManualResetEvent,и класс адаптера ManualResetEventAdapter, который реализует IManualResetEvent и обертывает фактический ManualResetEvent.Затем используйте IManualResetEvent везде в вашем приложении.Это особенно удобно, если вы уже используете инфраструктуру внедрения зависимостей, поскольку вы можете указать, что ManualResetEventAdapter всегда следует передавать классам, которым требуется IManualResetEvent.

...