Как смоделировать SoapException, используя Moq для обработки ошибок модульного теста

Мы унаследовали небольшое консольное приложение, которое выполняет вызовы веб-службы SOAP. Это'Это трагический беспорядок вложенных попыток, которые регистрируют исключения различными способами, и яМне бы хотелось обернуть тестовое покрытие тем, как оно себя ведет, когда возникает исключение SoapException.

Вопрос: Как я могу смоделировать класс, такой как SoapException, используя Moq, когда могуне смейся, а я не могусделать свойства или методы "виртуальный "?

Еще немного объяснения:

Чтобы проверить эту обработку ошибок, мне нужно контролироватьActor свойство объекта SoapException, а такжеDetail свойство для проверки обработки ошибок.

Фрагмент кода моего модульного теста:

[TestMethod]
public void MyTestMethod()
{
    Mock soapMock = new Mock(MockBehavior.Strict);

    soapMock.SetupGet(ex => ex.Actor).Returns("Test Actor");

Так как я'м издевается над конкретным классом, аActor свойство не помеченоВиртуальный»Moq выдает это исключение при выполненииSetupGet(...) линия во время пробного запуска:

System.NotSupportedException: недопустимая установка для не виртуального (переопределяемого в VB) члена: ex => ex.Actor

После некоторого прочтения идеальный ответ - смоделировать интерфейс, что я не могу сделать в этом случае. Так как это класс, встроенный в .NET Framework, я также могут волшебным знакомActor собственность как виртуальная.

Как я могу издеваться над SoapException или есть другой способ проверить обработку ошибок?

Кроме того, я сначала углубился в создание реальной SoapException с некоторыми узлами XML внутри него, но я быстро упал в кроличью нору программного создания дерева документов XML. яМожно сделать это, но это потребовало бы еще много строк кода настройки теста, который яЯ хотел бы избежать, если это возможно.