簡體   English   中英

如何在Spring WebFlow中測試決策狀態

[英]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>...

注意someClasssomeClassDao不在FlowScope或ConversationScope之內。

我想通過Mockito測試是否正在調用決策狀態表達式,然后驗證正確的狀態結果。

通常情況下,

  1. setCurrentState(someViewState:您要在過渡流中進行插槽測試的位置)
  2. 定義輸入
  3. 模擬一個ExternalContext
  4. 在該上下文中的setEvent
  5. resumeFlow(具有給定的上下文)
  6. 驗證模擬方法調用並最終
  7. assertCurrentState(someViewState:在給定輸入影響到流程中派生到的決策狀態后,您期望的位置)

似乎決策狀態不能作為視圖狀態運行(足夠公平:它們不是流中的給定視圖狀態),那么我們如何模擬/測試?

感謝您的答復。

好吧,一位同事(尊敬的默里·麥克弗森)向我指明了正確的方向,他提醒我該過程是:
1.模擬你的電話
2.開始你的流程&(現在這才是關鍵)
3.根據您的模擬呼叫設置的決策結果,聲明您的預期結果狀態(將是某些視圖),
-是否為結束狀態(在這種情況下,您也會期望流程結束)或
-(臨時)當前狀態。 如果到達了預期點,則說明決策已經執行。


注意:如果您的預期結果是“ currentState”,則可以驗證是否進行了模擬(dao)調用(因為流程將不再處於活動狀態),因此您無法進行此類驗證:已經達到您預期的最終狀態本身就是驗證。

在這個確切的示例中,您可以通過setCurrentState()在特定視圖狀態下啟動-您可以使用startFlow-這將啟動流程。 然后,由於決策狀態的結果,您可以測試最終到達的視圖狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM