Проверка активности задержки WF 4.0 - замените DurableTimerExtension своим собственным MockTimerExtension - PullRequest
0 голосов
/ 26 января 2012

Я хочу предоставить собственную реализацию TimerExtention вместо DurableTimerExtention, предоставляемого действием Delay, чтобы я мог тестировать рабочие процессы, использующие задержки.

Как мне это сделать?

Iиметь экземпляр WorkflowService и его корневую активность.Служба рабочего процесса размещена в WorkflowServiceHost (хотя я не могу понять, как получить экземпляр WorkflowInstance)

Ответы [ 2 ]

1 голос
/ 26 января 2012

Один из способов проверить ваши рабочие процессы - использовать Microsoft.Activities.UnitTesting на CodePlex . Он имеет возможность имитировать действия с помощью XAML Injection. Подробнее см. здесь .

В случае с Задержкой вы можете делать вещи намного проще. Вместо жесткого кодирования Duration к фиксированному значению я обычно создаю объект конфигурации с продолжительностью там. В упражнении «Задержка» я просто ввожу выражение типа Settings.WaitForPaymentDuration. В производстве Settings.WaitForPaymentDuration будет установлен примерно на 30 дней, но в тесте я могу вместо этого установить 1 секунду, не меняя рабочего процесса вообще.

0 голосов
/ 30 ноября 2012

У меня был похожий интерес к издевательству над TimerExtension, я написал в блоге об этом. В этом посте я внедряю свою собственную реализацию TimerExtension, используя WorkflowApplication.Extensions.Add<T>(Func<T>). WorkflowServiceHost также имеет эту коллекцию. Вы можете заменить конкретный класс, который у меня есть в моем примере, на макет. Я написал для 4.5, но он должен работать со всем, что использует коллекцию расширений. Это в 4, не уверен, более ранние версии.

[ссылка]

...