2010-08-09 5 views
5

У меня есть библиотека COM, которую я должен ссылаться в своем приложении, и я пытаюсь имитировать свои интерфейсы.Mocking COM-интерфейсы с использованием Rhino Mocks

Я получаю исключение, когда я делаю это MockRepository.GenerateMock<IAmAComInterface>();

я не получаю исключение, когда я делаю это: MockRepository.GenerateDynamicMockWithRemoting<IAmAComInterface>();, но ни один из моих ожиданий не проверяя.

Я что-то не так?

На данный момент у меня есть куча оберток для всех моих COM-интерфейсов, и я издеваюсь над ними, но мне бы очень хотелось, чтобы мне не пришлось обертывать все.

EDIT:
Исключения с GenerateMock:
System.TypeLoadException

с сообщением:
The type is marked as eligible for type equivalence, but either it has generic parameters, or it is not a structure, COM imported interface, enumeration, or delegate.

При использовании провала теста GenerateDynamicMockWithRemoting всегда говорит ОЖИДАЕТСЯ: 1 Фактическое: 0 для любых ожиданий на COM интерфейс.

Использование Rhino.Mocks 3.6.

+1

какие исключения? –

+0

@Wim Coenen Отредактировано с учетом исключений и более подробной информации. – Adam

+0

Являются ли эти COM-интерфейсы созданными в .NET и предназначены для экспорта в COM? Или это COM-объекты с созданными библиотеками типа .NET (через tlbimp)? – PatrickSteele

ответ

13

Похоже, что это проблема с «эквивалентной категорией» .NET 4.0. Смотрите это для более подробной информации: http://code.google.com/p/moq/issues/detail?id=254

затруднительного положения (как отмечалось выше), легко добавляя:

Castle.DynamicProxy.Generators.AttributesToAvoidReplicating.Add(typeof (TypeIdentifierAttribute)); 

к блоку испытания.

+2

Работает и для Moq. –

+0

Невозможно вызвать это из-за этой ошибки (или аналогичной): Castle.DynamicProxy.Generators.AttributesToAvoidReplicating «существует в обоих» ... Castle.Core.dll 'и' ... Rhino.Mocks.dll ' – PandaWood

+0

@ PandaWood - см. Http://stackoverflow.com/questions/8095221/how-to-resolve-castle-windsor-and-moq-version-conflicts-for-castle-core-assembly – PatrickSteele