2010-08-09 38 views
5

Tôi có một thư viện COM mà tôi phải tham chiếu trong ứng dụng của mình và tôi đang cố gắng giả lập giao diện của nó.Mocking COM Giao diện bằng cách sử dụng Rhino Mocks

Tôi nhận được trường hợp ngoại lệ khi tôi đang làm điều này MockRepository.GenerateMock<IAmAComInterface>();

Tôi không nhận được trường hợp ngoại lệ khi tôi làm điều này: MockRepository.GenerateDynamicMockWithRemoting<IAmAComInterface>(); nhưng không ai trong số mong đợi của tôi đang xác minh.

Tôi có làm gì sai không?

Hiện tại, tôi có một loạt các trình bao bọc cho tất cả các giao diện COM của mình và tôi đang chế nhạo chúng, nhưng tôi thực sự không muốn bao bọc mọi thứ.

EDIT:
Exceptions với GenerateMock:
System.TypeLoadException

Với thông điệp của:
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.

Khi sử dụng thử nghiệm thất bại GenerateDynamicMockWithRemoting luôn nói rằng dự kiến: 1 Thực tế: 0 đối với bất kỳ sự mong đợi trên COM giao diện.

Sử dụng Rhino.Mocks 3.6.

+1

Những trường hợp ngoại lệ? –

+0

@Wim Coenen Đã chỉnh sửa bao gồm các trường hợp ngoại lệ và các chi tiết khác. – Adam

+0

Các giao diện COM này có được tạo bằng .NET và được thiết kế để xuất sang COM không? Hoặc là họ COM đối tượng với các thư viện kiểu .NET được tạo ra (thông qua tlbimp)? – PatrickSteele

Trả lời

13

Có vẻ như đây là sự cố với "Loại Tương đương" của .NET 4.0. Xem này để biết thêm chi tiết: http://code.google.com/p/moq/issues/detail?id=254

Việc sửa chữa (như đã nêu ở trên) rất dễ dàng bằng cách thêm:

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

Để kiểm tra đơn vị của bạn.

+2

Làm việc cho Moq. –

+0

Không thể cho tôi gọi điều này do lỗi này (hoặc tương tự): Castle.DynamicProxy.Generators.AttributesToAvoidReplicating 'tồn tại trong cả hai' ... Castle.Core.dll 'và' ... Rhino.Mocks.dll ' – PandaWood

+0

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

Các vấn đề liên quan