2014-10-31 2 views
1

Я должен использовать несколько веб-сервисов ASMX в своем проекте, но их вызовы методов затрудняют модульный тест для остальной части моего кода.Потребление ASMX и насмешка методов

Когда я использовал службу WCF в прошлом, он создает интерфейс для клиента, который позволяет мне высмеивать вызовы службы в моих модульных тестах.

Возможно ли это для веб-служб ASMX?

+0

Да. Можете ли вы показать код, в котором вы хотите использовать макет? Какую насмешливую структуру вы используете? – CodeCaster

+0

Im используя moq. Я обновлю свой вопрос с примером как можно скорее. Итак, как это можно сделать? Есть ли способ создания интерфейса из веб-ссылки? – heymega

+0

Правда, но методы не должны быть виртуальными, поэтому moq может их переопределить? Метод Webreference не является виртуальным :( – heymega

ответ

-1

Вы можете использовать WcfTestClient, который по умолчанию устанавливается с помощью Visual Studio. Он прост в использовании и подходит для тестирования wcf и asmx service.

Вы можете найти этот инструмент из пути "C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ WcfTestClient.exe"

Вы можете сделать модульное тестирование, а также путем добавления сервис-ссылка службы asmx в вашем проекте. при открытии Reference.cs вы получите интерфейс [SeriveName] Soap.cs, который содержит все методы модульного теста.

+0

Th ank вы для вашего ответа, однако я не пытаюсь протестировать сервис, а вместо этого пытаюсь отделить его зависимость от моего кода, чтобы я мог тестировать модуль. – heymega

3

мое решение

  1. Добавить веб-ссылку в Visual Studio, щелкнув правой кнопкой мыши на Service References > Add Service Reference > Advanced > Add Web Reference.
  2. Открыть созданный файл reference.cs
  3. Щелкните правой кнопкой мыши на названии имени вашего класса и выберите Refactor > Extract > Extract Interface. Это даст вам интерфейс, представляющий ваши методы обслуживания.
  4. Создать новый частичный класс для сервиса и сделать его наследовать от нового интерфейса, убедившись, что пространство имен и имя вашего матча класса, который ваша службы в reference.cs

Теперь у вас есть интерфейс, вы сможете издеваться над сервисом в своих модульных тестах.

Я надеюсь, что это поможет другим людям, и если theres более простой метод, пожалуйста, дайте мне знать.

+0

Любое решение для mockin asmx вместо этого? – anmarti

Смежные вопросы