Если вы не можете использовать TypeMock для перехвата вызова метода, рекомендуется использовать шаблон для создания прокси-сервера, который пересылает не виртуальные или статические методы, которые вы хотите проверить, а затем установить ожидание на прокси-сервере. Для иллюстрации рассмотрим следующие классы.
class TypeToTest
{
public void Method() { }
}
interface ITypeToTest
{
void Method();
}
class TypeToTestProxy : ITypeToTest
{
TypeToTest m_type = new TypeToTest();
public void Method() { m_type.Method(); }
}
Создав этот прокси, вы теперь можете использовать ITypeToTest
вместо того места, где вы проходили, или установить экземпляр TypeToTest
, убедившись, что реализация по умолчанию использует TypeToTestProxy
, так как он переходит к реальной реализации. Затем вы можете создать макет ITypeToTest
в своем тестовом коде и соответственно установить ожидания.
Обратите внимание, что создание этих прокси может быть очень утомительным, подверженным ошибкам и длительным. Для решения этой проблемы у меня есть библиотека и набор инструментов, которые генерируют сборки, содержащие эти типы для вас. Пожалуйста, обратитесь к этой странице для получения дополнительной информации.