WebFlowTestCase registerFlow()多个流可能吗?

时间:2013-04-04 06:14:56

标签: integration-testing spring-webflow

您好我有一个WebFlowTestCase并且工作正常但我遇到了一个问题,当我需要测试同一个控制器中的另一个流(groovy)时。 这就是我的控制器的样子:

        class MyController {

    def someService
    def dateHelper = new DateHelper()
    def index = {... }
    def myCreateFlow = {
              start{}
              createCase{}
              finishCancel{
    }
    def myViewFlow = {...}
    def myEditFlow = {...}
    }

我已成功创建 myCreateFlow 的测试,如下所示:

  class MyControllerTest  extends WebFlowTestCase {

        def myController =  new MyController();

        @Override
        public Object getFlow() {
            // TODO Auto-generated method stub
             return myController.myCreateFlow
        }
        protected void setUp() {
            super.setUp()
        }

        protected void tearDown() {
            super.tearDown()
        }

        void testmyCreateFlow()
        {
            ...
        }
}

我的问题是myEditFlow和myViewFlow怎么样?当getFlow()仅返回myCreateFlow时,如何注册或使用它?我有没有办法在一个webflowtest中使用它们而不创建一个新的webflowtestclass?或者有一种方法我可以使用一些switch / if else方法将其放入getflow中,例如:

@Override
            public Object getFlow() {
                // TODO Auto-generated method stub
                if condition
                            return myController.myCreateFlow
                         else return myController.myEditFlow
            }

当我尝试创建一个testmyEditFlow()时,我得到下面的错误,我知道这是因为get flow只返回myCreateFlow。至少这就是我如何看待测试错误信息。

  

无法在流'test'中找到id为'myEditFlow'的状态 - 已知状态   id是'array ['start','createCase'...'finishCancel']'

1 个答案:

答案 0 :(得分:0)

您可以在setUp方法中注册其他流,如下所示:

 protected void setUp() {
    super.setUp()
    registerFlow("myController/myEdit", myController.myEditFlow)
    registerFlow("myController/myView", myController.myViewFlow)
}