Подтвердить что ты не робот

Тестирование веб-службы WCF?

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

Я не уверен, что так, как мне кажется, я должен это сделать правильно. Мне присвоен URL-адрес службы WCF, например:

http:://somesite.com/wcf/RealService.svc

и

http:://somesite.com/wcf/RealService.svc?wsdl

Поэтому вместо того, чтобы фактически добавить RealService.svc в мой проект как Service Reference, я просто добавил новый пустой WCF Service в мой проект под названием Service1.

Затем я хочу использовать инструмент wsdl.exe (или, возможно, svcutil.exe?) для создания интерфейса из URL-адреса WSDL: http:://somesite.com/wcf/RealService.svc?wsdl.

Затем я открываю файл Service1.cs и вместо того, чтобы letit наследуется от IService1.cs, я наследую его от сгенерированного interface.

Затем вместо вызова реальной службы в моем приложении я просто вызываю класс Service1. Разве это так насмешливо работает веб-сервис??

Также нужно выяснить, как сгенерировать interface с помощью инструмента svcutil (я читал, что я не могу использовать wsdl.exe для службы WCF?). Поэтому любые советы по этому поводу более чем приветствуются!

4b9b3361

Ответ 1

Многие области, на которые нужно обратить внимание, попытаются указать вам в правильном направлении:

  • Если вы хотите протестировать (то есть передать ввод, проверить вывод) свою службу WCF, используйте инструмент Visual Studio GUI WCF Test Client (статья MSDN здесь).

  • Если вы хотите высмеять свою службу WCF (т.е. unit test ваш компонент, который использует службу WCF), используйте фальшивую фреймворк, например NMock2, которая позволяет вам обманывать интерфейс службы (связанный поток SO здесь). Вы также можете вручную манипулировать макетом (путем реализации интерфейса), если вы не хотите использовать внешнюю фреймворк, но это более активно.

  • Если вы хотите использовать unit test вашу службу WCF (например, выполнять блок-тесты для службы, бизнеса, данных и т.д.), используйте популярную фальшивую фреймворк (связанная с ней нить здесь).

  • Чтобы создать прокси для вашей службы WCF, используйте утилиту командной строки svcutil.exe(статья MSDN здесь), поскольку вы догадывался. Эта утилита поставляется с различными опциями (язык, пространство имен, файл конфигурации и т.д.), Поэтому обратите внимание на них.

Надеюсь, что это поможет.

Ответ 2

Вы можете создать прокси-сервер с помощью svcutil.exe (из Visula Studio: Добавить ссылку на службу...). Это создаст ваш клиентский прокси и Интерфейс службы.

Например, для вашего сервиса http:://somesite.com/wcf/RealService.svc? wsdl мы получим:

  • IRealService (интерфейс)
  • RealServiceClient (реализует IRealService и расширяет System.ServiceModel.ClientBase)

Вы можете создать класс mock, который реализует ваш служебный интерфейс (IRealService).

И в своем приложении вместо того, чтобы инициировать конкретного клиента службы (RealServiceClient), когда вы хотите позвонить в свою службу, вы можете использовать Factory или контейнер IOC.

Таким образом вы можете решить, с каким экземпляром ваше приложение (или модули/компоненты) работает с: реальным сервисом во время выполнения, макета при тестировании.