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