[英]Spring Webflow 2.3 Testing: How to mock @Autowired fields of a flow variable
[英]How to go about testing decision-state in Spring WebFlow
我正在嘗試找到在Spring WebFlow上下文中對測試決策狀態進行單元測試的最佳方法。
<var name="registration" class="*some class path*.Registration"/>
<decision-state id="checkSignedIn">
<if test="*someClass*.isSignedOn(registration)"
then="checkHas*Said*Service"
else="registrationChoice"/>
</decision-state>
<decision-state id="checkHasTCloudService">
<if test="*someClass*Dao.isUserRegisteredFor*saidSvc*(registration)"
then="*svc*Activated"
else="registrationChoice"/>
</decision-state>
<view-state id="registrationChoice" model="registration" view="view.xhtml" >
<on-entry>...
注意someClass和someClassDao不在FlowScope或ConversationScope之內。
我想通過Mockito測試是否正在調用決策狀態表達式,然后驗證正確的狀態結果。
通常情況下,
似乎決策狀態不能作為視圖狀態運行(足夠公平:它們不是流中的給定視圖狀態),那么我們如何模擬/測試?
感謝您的答復。
好吧,一位同事(尊敬的默里·麥克弗森)向我指明了正確的方向,他提醒我該過程是:
1.模擬你的電話
2.開始你的流程&(現在這才是關鍵)
3.根據您的模擬呼叫設置的決策結果,聲明您的預期結果狀態(將是某些視圖),
-是否為結束狀態(在這種情況下,您也會期望流程結束)或
-(臨時)當前狀態。 如果到達了預期點,則說明決策已經執行。
注意:如果您的預期結果是“ currentState”,則可以驗證是否進行了模擬(dao)調用(因為流程將不再處於活動狀態),因此您無法進行此類驗證:已經達到您預期的最終狀態本身就是驗證。
在這個確切的示例中,您可以通過setCurrentState()在特定視圖狀態下啟動-您可以使用startFlow-這將啟動流程。 然后,由於決策狀態的結果,您可以測試最終到達的視圖狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.