Hi,
I was trying to use StrutsTestCase to write a test for a Bean, which has a
member of String[]. The code runs perfectly in servlet container(Tomcat), but
fails as a mock test. In EditActionTest.java, assertNotNull("The action is null
but should not be.", action) still works fine, but String result =
actionProxy.execute() returns the result as "error" instead of "success". All
the related codes are listed below.
Can anyone give me a hint?
Thanks in advance! Tom
Person.java
public class Person{
String[] models = new String[]{"Ford", "Nissan"};
public void setModels(String[] models){
this.models = models;
}
public String[] getModels(){
return models;
}
}
Edit.java
public class EditAction extends ActionSupport{
Person personBean;
public void execute(){
return SUCCESS;
}
}
struts.xml
<struts>
<action name="edit" class="EditAction" method="execute">
<result name="input">/edit.jsp</result>
<result name="success">/thankyou.jsp</result>
</action>
</struts>
edit.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:form action="save" method="post">
<s:checkboxlist key="personBean.models" list="Ford, Nissan" />
<s:submit key="submit" />
</s:form>
EditActionTest.java
public class EditActionTest extends StrutsTestCase {
@Test
public void testExecuteValidationPasses() throws Exception {
request.setParameter("personBean.models", new String[]{"Ford", "Nissan"});
ActionProxy actionProxy = getActionProxy("/edit.action") ;
EditAction action = (EditAction) actionProxy.getAction();
assertNotNull("The action is null but should not be.", action);
String result = actionProxy.execute();
assertEquals("The execute method did not return " + ActionSupport.SUCCESS
+ " but should have.", ActionSupport.SUCCESS, result);
}
}