I´m trying to do TDD with an object that has a dependency on a COM Interface. I though about mocking the COM interface, while doing development testing, and do it real on the integration tests.
However, I cannot mock the COM interface, I tried with Moq, and it throws an exception:
System.TypeLoadException was unhandled by user code Message=Could not load type 'Castle.Proxies.iTunesAppProxy' from assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'. 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
Is it possible with other frameworks? How do you do TDD with COM dependent objects?
Thanks in advance!or delegate
Try to set "Embed Interop Types" to FALSE for assembly that contains COM interface.
I would suggest that you take ownership of the interface of the COM object, this is where Dependency Inversion Principle would come into play.
If you don't have access to the source, you will have to create your own abstraction that wraps the COM Object, otherwise you will have third-party calls throughout your code.
[EDIT]
Now the abstraction should be able to be mocked. The actual implementation of the wrapper will have the COM object as a HAS-A
relationship.
You will then want to have an integration test for the implementation.
You need to treat the COM object itself as if it was something similar to a database or graphic rendering engine or a web service.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With