2012-01-25 45 views

回答

1

測試工作流的一種方法是使用CodePlex上的Microsoft.Activities.UnitTesting。它有能力使用XAML Injection來模擬活動。有關更多詳情,請參閱here

對於延遲活動,您可以做更簡單的事情。而不是硬編碼持續時間到一個固定值,我通常創建一個配置對象的持續時間在那裏。在延遲活動中,我只需輸入一個表達式,如Settings.WaitForPaymentDuration。在生產中,Settings.WaitForPaymentDuration將設置爲30天左右,但在測試中,我可以將其設置爲1秒,而不必改變工作流程。

+0

我希望能夠不要只更換30天內1秒,但要控制時間。即我希望延遲活動能夠處理給定的'ISystemClock {DateTime Now {get; }}'實例。使用XamlInjector的問題在於,我必須重新實現整個Delay活動,但它提供的TimerExtension的唯一區別(這就是我最終做的)。理想情況下,我想用模擬替代DurableTimerExtension,而不必混淆Delay活動。 –

0

我對mocking the TimerExtension有類似的興趣,我寫了一篇關於它的博客文章。在那篇文章中,我使用WorkflowApplication.Extensions.Add<T>(Func<T>)注入了自己的TimerExtension實現。 WorkflowServiceHost也有這個集合。你可以用模擬來替換我的例子中的具體類。我寫的目標是4.5,但它應該適用於任何使用擴展集合的東西。它在4,不知道早期版本。

[Link]