Jetty всегда возвращает код состояния 400 на Java HttpServlet - PullRequest
0 голосов
/ 03 августа 2011

В настоящее время я пытаюсь настроить модульный тест для класса HttpServlet, который есть в Java.Тем не менее, документации Jetty не хватает, и я немного застрял.Я вполне уверен, что contextPath - это / hbc, так как я распечатал его, используя getContextPath () в сервлете.Однако я не уверен, что а) вторым параметром метода addServlet () должен быть и б) каким должен быть URI.

Код состояния продолжает возвращаться как 400, а содержимое равно нулю.Я не уверен, что это потому, что я не указываю на правильное местоположение (но я бы подумал, что это приведет к 404) или что-то еще отсутствует.

Сервлет имеет init (),Методы processRequest (), doGet () и doPost ().

Мысли?

public class HBCUnitTests extends TestCase {
    private ServletTester tester;

    @BeforeClass
    public void setUp() throws Exception {
        tester = new ServletTester();
        tester.setContextPath("/hbc");
        tester.addServlet(HubCommServlet.class, "/");
        tester.start();
    }

    @AfterClass
    public void tearDown() throws Exception {
        tester.stop();
    }

    @Test
    public void test() throws Exception {
        HttpTester request = new HttpTester();
        request.setMethod("POST");
        request.setVersion("HTTP/1.1");
        request.setURI("/");

        System.out.println(request.generate());

        HttpTester response = new HttpTester();
        response.parse(tester.getResponses(request.generate()));

        System.out.println(response.getContent());
        System.out.println(response.getURI());
        System.out.println(response.getReason());

        assertEquals(200,response.getStatus());
        assertEquals("<h1>Hello Servlet</h1>",response.getContent());
    }
}

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Похоже, вторым аргументом addServlet() является отображение сервлета.

Если contextPath равен /hbc, а ваш сервлет сопоставлен с /, тогда я ожидаю, что вам нужно запросить /hbc/:

HttpTester request = new HttpTester();
...
request.setURI("/hbc/");
0 голосов
/ 10 августа 2011

В итоге я использовал JMock для тестирования сервлета.

...