对于在 Spring Webflow 流程中使用的模拟 Spring Bean 有明确的指导原则。默认情况下,流可以隐式引用流中的 Spring Bean,并且 AbstractXmlFlowExecutionTests 基测试类有一个方法可以重写以模拟这些 Bean。
我找不到类似的方法来模拟被测流中流变量的 @Autowired 字段。请参阅以下基本设置以了解我的意思。
测试中的流程:
<?xml version="1.0" encoding="UTF-8"?>
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd"
parent="commons">
<var name="consumerBean" class="com.mycompany.ConsumerBean" />
<!-- etc.. -->
带有 @Autowired 字段的 Bean:
public class ConsumerBean implements Serializable {
@Autowired
transient CustomerService userService;
//Etc..
所以我的问题是,如何向“consumerBean”流变量提供/配置“userService”的模拟?
流变量的 @Autowired 字段是 Spring Bean,因此应在配置和模拟流访问的 Spring Bean 的同一位置进行配置。
// Setup mocks
@Override
protected void configureFlowBuilderContext(MockFlowBuilderContext builderContext) {
builderContext.registerBean("consumerBean", mock(ConsumerBean.class));
builderContext.registerBean("userService", mock(CustomerService.class));
}
我是一名优秀的程序员,十分优秀!