2012-06-22 1 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. someClass и someClassDao не входят в FlowScope или ConversationScope.

Я хочу проверить через Mockito, что выражения выражения для решения вызывают, а затем проверяют правильные результаты состояния.

Обычно, можно просто

  1. setCurrentState (someViewState: где вы хотите тест слот в течение переходного потока)
  2. определить входной
  3. издеваться ExternalContext
  4. SetEvent в этом контексте
  5. resumeFlow (с заданным контекстом)
  6. проверить, вызваны ли методы вызова & fina LLY
  7. assertCurrentState (someViewState: где можно было бы ожидать, чтобы быть, после того, как данный вход повлиял на решение состояния раскошелиться в пределах потока)

кажется директивные государства не действуют как view-state (достаточно справедливо: они не являются данным состоянием зрения в потоке), так как насмехаться/тестировать?

Спасибо, что ответит.

ответ

0

Ну, я был поставлен в правильном направлении коллеги (почтенный Мюррей MacPherson), который напомнил мне, что этот процесс:
1. издеваться ваш дао называет
2. начать свой поток & (теперь это основной)
3. На основе результатов решения, установленных вашими издеваемыми вызовами, утвердите свое ожидаемое состояние результата (что будет некоторое представление),
- будет ли конечное состояние (в этом случае вы также ожидаете конец вашего потока) или
- (промежуточное) текущее состояние. Если он прибыл в пункт exp, то вы знаете, что решения были выполнены.


N.B. если ваш ожидаемый результат является «currentState», то вы можете проверить, что вызванный (dao) call/s был/был сделан иначе (поскольку поток больше не будет активным), вы не можете сделать такие проверки: простой факт, который вы прибыл в ваше ожидаемое конечное состояние, это проверка сама по себе.

0

В этом точном примере, у вас есть альтернатива, начиная с определенным состоянием с помощью setCurrentState() - вы можете использовать startFlow - который будет ... начать поток. Затем вы можете проверить, в каком состоянии просмотра вы попадаете, из-за результатов ваших решений.