2012-06-22 3 views
0

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>... 

N.B. someClasssomeClassDao은 FlowScope 또는 ConversationScope 내에 없습니다.

Mockito를 통해 의사 결정 상태 표현식이 호출되고 올바른 상태 결과를 확인하려고하는지 테스트하고 싶습니다.

일반적으로, 한 수 단순히

  1. setCurrentState (someViewState : 당신이 천이 류 내에서 슬롯 테스트하려는 경우)
  2. 정의 입력을
  3. 모의 ExternalContext 그 맥락에서
  4. 로 SetEvent
  5. resumeFlow (주어진 컨텍스트에서)
  6. 모의 메서드 호출을 확인하십시오 & fina 에서야
  7. assertCurrentState (someViewState : 당신은 후 주어진 입력이 흐름 내에서 결정 상태가 포크 영향을 미쳤다에서 것으로 기대 경우)

의사 결정 상태가로 작동하지 않는 것 같다 뷰 상태 (충분히 공정한 : 흐름 내에서 주어진 뷰 상태가 아닙니다) 그래서 우리는 어떻게 조롱하거나 테스트합니까?

답장을 보내 주셔서 감사합니다. 이제 (
1. 모의 당신의 DAO가
2. 귀하의 흐름 &을 시작 호출

답변

0

음이 나는 과정이라고 생각 나게 동료 (오래된 머레이 맥 펄슨)에 의해 올바른 방향으로 넣어 봤는데 이것은 목표입니다.
3. 조롱 한 통화로 결정한 결과에 따라 예상 결과 상태 (일부보기가 될 것임)를 나타내십시오.
- 최종 상태 (해당 경우에도 귀하의 흐름을 끝내십시오) 또는
- (임시) 현재 상태. 그것이 예상 지점에 도착했다면 결정이 행사되었음을 알 수 있습니다.


N.B. 예상 된 결과가 'currentState'라면, 조롱 된 (dao) 통화가 다른 방법으로 만들어 졌는지 확인할 수 있습니다 (흐름이 더 이상 활성화되지 않으므로) 그런 검증을 할 수 없습니다 : 간단한 사실 예상 최종 상태에 도착한 것은 그 자체로 검증입니다.

0

이 정확한 예제에서는 setCurrentState()을 통해 특정 뷰 상태에서 시작하는 대신에 startFlow을 사용할 수 있습니다. 그러면 ... 흐름을 시작합니다. 그런 다음 결정 상태의 결과로 인해 종료 할 뷰 상태를 테스트 할 수 있습니다.

관련 문제