Как смоделировать 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. яМожно сделать это, но это потребовало бы еще много строк кода настройки теста, который яЯ хотел бы избежать, если это возможно.

Ответы на вопрос(2)

Ваш ответ на вопрос