Тесты 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);

}
Другие вопросы по тегам