Как смоделировать вызов веб-службы в рабочем процессе WF? - PullRequest
3 голосов
/ 05 августа 2010

Я внедряю веб-сервис WCF на основе WF. Этот веб-сервис использует другие веб-сервисы, за которые я не отвечаю. Таким образом, мой рабочий процесс в основном содержит несколько операций отправки.

Я придерживаюсь подхода TDD, поэтому реализация сервиса должна охватываться модульными тестами. Я хочу проверить правильность вызова сторонних сервисов.

В случае отсутствия рабочего процесса я бы посмеялся над внешними сервисами через NMock. Но в моем случае я не могу управлять созданием экземпляра рабочего процесса и не знаю, как обмануть действия Send, чтобы использовать фиктивные объекты вместо конечных точек реальных служб.

Хотя Рабочие процессы и действия по модульному тестированию * В статье 1008 * о MSDN упоминается мошенничество. Я не смог найти ни одного полного примера насмешек над удаленным концом действия отправки.

Есть идеи, как это сделать?

Ответы [ 2 ]

0 голосов
/ 24 августа 2010

пожалуйста, попробуйте Moles Framework. http://research.microsoft.com/en-us/projects/pex/

Существуют примеры того, как издеваться над сервисом sharepoint. Я считаю, что тот же трюк должен применяться к рабочему процессу WF.

Я пытался смоделировать sqlconnection, Entity Framework, вызов веб-службы, он работает очень аккуратно. По сути, он может высмеивать практически любые объекты .net.

0 голосов
/ 05 августа 2010

Использование ServiceAgents обертки для ваших веб-сервисов было бы одним из возможных способов сделать это.

Это шаблон, которому я следовал в предыдущих моих проектах.

Поскольку они основаны на интерфейсе, вы можете легко смоделировать сервисы.

У этого шаблона есть и другие преимущества (помимо модульного тестирования), в том числе возможность в определенной степени абстрагировать ваше приложение от внешних зависимостей. Однако это добавляет накладные расходы на создание другого слоя класса поверх сервисов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...