2012-01-25 10 views
0

遅延を使用するワークフローをテストできるように、遅延アクティビティで提供されるDurableTimerExtentionの代わりにTimerExtentionの独自の実装を提供したいと思います。WF 4.0遅延テスト - DurableTimerExtensionを自分のMockTimerExtensionに置き換えます

どうすれば実現できますか?

私はWorkflowServiceインスタンスとそのルートアクティビティを持っています。ワークフローサービスはWorkflowServiceHostでホストされています(WorkflowInstanceインスタンスを取得する方法はわかりません)。

答えて

1

ワークフローをテストする1つの方法は、CodePlexでMicrosoft.Activities.UnitTestingを使用することです。 XAMLインジェクションを使用してアクティビティを模擬する機能を備えています。詳細はhereを参照してください。

遅延アクティビティの場合は、もっと簡単にすることができます。 Durationを固定値にハードコーディングするのではなく、通常はそこに持続時間を持つconfigオブジェクトを作成します。遅延アクティビティでは、Settings.WaitForPaymentDurationのような式を入力するだけです。プロダクションではSettings.WaitForPaymentDurationは30日のようなものに設定されますが、テストではワークフローをまったく変更せずに1秒に設定することができます。

+0

私はちょうど1秒で30日間を交換するが、時間を制御することがないことができるようにしたいです。私。私は、遅延アクティビティが与えられた 'ISystemClock {DateTime Now {get; }} 'インスタンス。 XamlInjectorを使用する際の問題は、Delayアクティビティ全体をTimerExtensionの唯一の違いで再実装する必要があることです(これが私がやったことです)。理想的には、遅延アクティビティを混乱させることなく、DurableTimerExtensionをモック1で置き換えることができます。 –

0

私はmocking the TimerExtensionに同様の関心事を持っていました。私はそれについてのブログ記事を書いています。その投稿では、WorkflowApplication.Extensions.Add<T>(Func<T>)を使用してTimerExtensionの独自の実装を挿入します。 WorkflowServiceHostにもこのコレクションがあります。あなたは私の例で持っている具体的なクラスをモックで置き換えることができます。私は4.5をターゲットに書いていますが、Extensionコレクションを使用するものであれば動作します。その4で、以前のバージョンを確認していない。

[Link]

関連する問題