Тесты Struts2 Junit4 накапливают ответы JSON при каждом выполнении действия
Я написал несколько тестов Junit4, которые выглядят так:
public class TestCampaignList extends StrutsJUnit4TestCase<Object> {
public static final Logger LOG = Logger.getLogger(TestCampaignList.class.getName());
@Before
public void loginAdmin() throws ServletException, UnsupportedEncodingException {
request.setParameter("email", "nitin.cool4urchat@gmail.com");
request.setParameter("password", "22");
String response = executeAction("/login/admin");
System.out.println("Login Response : " + response);
}
@Test
public void testList() throws Exception {
request.setParameter("iDisplayStart", "0");
request.setParameter("iDisplayLength", "10");
String response = executeAction("/campaign/list");
System.out.println("Reponse : " + response);
}
}
Оба действия возвращают результаты JSON и executeAction
Джавадок говорит:
For this to work the configured result for the action needs to be FreeMarker, or Velocity (JSPs can be used with the Embedded JSP plugin)
Кажется, что он не может обработать результаты JSON, и, следовательно, при выполнении второго действия отображается накопленный результат, такой, что result_for_second_action= result1 concatenate result2
Есть ли решение, чтобы получить executeAction()
возвращать фактический ответ JSON, а не объединять ответы JSON от всех предыдущих выполнений.
1 ответ
Это происходит потому, что вы выполняете действие в @Before
метод. Таким образом, setUp
метод StrutsJUnit4TestCase
не будет вызван между вашим loginAdmin
и метод тестирования, и параметры предыдущего запроса передаются ему снова. Ты можешь позвонить setUp
метод самостоятельно в вашем методе испытаний. В вашем случае вы можете позвонить initServletMockObjects
метод для создания новых фиктивных объектов сервлета, таких как запрос.
@Test
public void testList() throws Exception {
setUp();
// or
// initServletMockObjects();
request.setParameter("iDisplayStart", "0");
request.setParameter("iDisplayLength", "10");
String response = executeAction("/campaign/list");
System.out.println("Reponse : " + response);
}