1

在 Spring Webflow 流中模拟 Spring Beans 有明确的指导方针。默认情况下,流可以从流中隐式引用 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”的模拟?

4

1 回答 1

1

流变量的 @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));
    }
于 2013-03-05T20:43:29.813 回答