![](/img/trans.png)
[英]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.