我正在运行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)。
答案 0 :(得分:0)
解决方案是直接调用action方法,而不是依赖struts框架为你执行操作。
此:
final String result = this.proxy.execute();
变为
final String result = this.actionUnderTest.myActionMethod();
这对我来说效果很好!这样做意味着没有任何处理/执行动作方法的结果(例如,没有链接发生)。