Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > Jmock для тестирования Servlets


Автор: FcUK 17.4.2007, 10:57
Привет.
Что то не могу разобратса как написать коректные тесты для Сервлетов используя Jmock

Вот допустим есть обычний клас который изменяет локаль


Код

public final class ChangeLocale extends Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        String language = request.getParameter("language");
        String country = request.getParameter("country");
        if (null == country) {
            setLocale(request, new Locale(language));
        } else {
            setLocale(request, new Locale(language, country));
        }
        return new ActionForward(mapping.findForward("success"));
    }
}


как для него написать тест используя Jmock?

я написал вот такой...но он падает - возникает java.lang.NullPointerException в строке - "return new ActionForward(mapping.findForward("success"));"

Код

public class ChangeLocaleTest extends MockObjectTestCase {

    public void testConstructor() throws Throwable {
        ChangeLocale changeLocale = new ChangeLocale();
        ActionMapping mapping = new ActionMapping();
        ActionForm form = new UserProfileForm();
        final HttpServletRequest request = mock(HttpServletRequest.class);
        HttpServletResponse response = mock(HttpServletResponse.class);

        checking(new Expectations() {
            {
                one(request).getParameter("language");
                one(request).getParameter("country");
                allowing(request).getSession();
            }
        });

        ActionForward result = changeLocale.execute(mapping, form, request,response);
        assertNotNull(result);
    }
}


понимаю что возможно он в корне не правильний потому прошу хорошый пример теста для ChangeLocale используя Jmock

Автор: FcUK 17.4.2007, 13:24
вроди сам разобралса....получился вот такой рабочий тест

Код

public class ChangeLocaleTest extends MockObjectTestCase {

    public void testConstructor() throws Throwable {
        ChangeLocale changeLocale = new ChangeLocale();

        
        ActionForm form = new UserProfileForm();

        final HttpServletRequest request = mock(HttpServletRequest.class);
        HttpServletResponse response = mock(HttpServletResponse.class);

        checking(new Expectations() {
            {
                one(request).getParameter("language");
                will(returnValue("ukr"));
                one(request).getParameter("country");
                will(returnValue("ukr"));
                allowing(request).getSession();
            }
        });

        ActionForward result = changeLocale.execute(createActionMappingWithForward(), form, request,response);
        
        assertNotNull(result);
        assertEquals(result.getPath(), "success");
    }

    private ActionMapping createActionMappingWithForward() {
        ActionMapping mapping = new ActionMapping() {
            public ActionForward findForward(String name) {
                return new ActionForward(name);
            }
        };
        return mapping;
    }

}

Автор: AntonSaburov 17.4.2007, 13:25
Молодец - держи плюса за то, что поделился

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)