Struts2 TDD - 测试链接 - 如何防止调度员进行链接?

时间:2014-09-18 18:31:33

标签: junit struts2 tdd action chain

我正在运行JUnit测试 - 测试链接的动作。

我们有一个庞大的内部测试框架(继承自StrutsTestCase),它为测试期间的操作设置了所有内容,但是当链接到新操作时 - 新的(链接的)操作没有设置正确和内部代码运行为NULL。

我认为测试应该只测试动作调用的正确结果,并且测试链式动作。

我的问:我正在寻找一种在测试时禁用链接的方法。可以将StrutsTestCase.setUp()中创建的Dispatcher配置为以不同方式处理链接(例如,什么也不做)?

希望我能避免链接,但这就是它在这里完成的方式。

编辑 - 这是代码: 动作:

  @Action(value = SUBMIT, results = { 
        @Result(name = SUCCESS, type = "chain", params = { "actionName", "myActionName", "namespace", "/myNameSpace" }) })
public String submitForm() throws IllegalAccessException, InvocationTargetException, IOException     {

    return SUCCESS;
}

测试:

    @Test
public void testStuff() throws Exception {
    setupAction();
    prepareForValidUser();
    this.actionUnderTest.getModel().setUpSomeStuff(someSetupValue);
    final String result = this.proxy.execute();
    assertEquals("Result not the expected result", SUCCESS, result);
}

测试很大程度上依赖于一个不错的测试框架; proxy.execute()运行动作(com.opensymphony.xwork2.ActionProxy.class)。

1 个答案:

答案 0 :(得分:0)

解决方案是直接调用action方法,而不是依赖struts框架为你执行操作。

此:

final String result = this.proxy.execute();

变为

final String result = this.actionUnderTest.myActionMethod();

这对我来说效果很好!这样做意味着没有任何处理/执行动作方法的结果(例如,没有链接发生)。

相关问题