[英]Jetty always returning 400 status code on Java HttpServlet
我目前正在嘗試為Java中的HttpServlet類設置單元測試。 但是,缺少Jetty文檔,但我有些困惑。 我相當確定contextPath是/ hbc,因為我在servlet中使用getContextPath()將其打印出來。 但是,我不確定a)addServlet()方法的第二個參數應該是什么,b)URI應該是什么。
狀態代碼將繼續返回400,並且內容為null。 我不確定這是否是因為我沒有指向正確的位置(但是我認為那會導致404錯誤)或是否缺少其他內容。
Servlet具有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());
}
}
看起來addServlet()
的第二個參數是servlet映射。
如果contextPath是/hbc
並且您的servlet映射到/
那么我希望您需要請求/hbc/
:
HttpTester request = new HttpTester();
...
request.setURI("/hbc/");
我最終使用JMock來測試servlet。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.