Вы можете имитировать только виртуальные / абстрактные методы, если вы не используете что-то сверхпрочное, например TypeMock.
Когда вам нужно протестировать код, который вы не можете контролировать, вам придется сломать свою зависимость от этого кода. Создайте фасад, который имеет методы, свойства и события непроверяемого класса. Придерживайтесь тех, которые вы на самом деле используете; это уменьшит размер кода, который вы должны написать. Код против фасада, которым вы управляете, а не код, который вы не делаете.
Последнее, что нужно сделать, это использовать один из нескольких методов для доступа к фасаду, который позволит вам заменить макет во время испытаний. Вы можете использовать файлы конфигурации, структуры внедрения зависимостей, ленивые экземпляры и т. Д. Таким образом, вы можете макетировать свой фасад и использовать его для модульных тестов. Конечно, вам все равно придется выполнить некоторые интеграционные тесты, чтобы убедиться, что ваш фасад работает правильно с реальным классом взаимодействия COM.
Для вдохновения взгляните на System.Web.Abstractions. Он содержит много классов, которые обертывают базовые классы ASP.NET, чтобы сделать их смешными.