У меня есть это в doPost () моего сервлета:
if(request.getParameter("mode").equals("html"))
request.getRequestDispatcher("WEB-INF/jsp/Menu.jsp").forward(request, response);
else {
request.getRequestDispatcher("WEB-INF/jsp/success.jsp").forward(request, response);
}
Я проверяю выполнение первого оператора, имея HTML-страницу в следующей форме:
<form action="" method="post">
Username:<br>
<input type="text" name="user"><br>
Password:<br>
<input type="text" name="pass"><br><br>
<input type="hidden" name="mode" value="html" />
<input type="submit" value="Submit">
</form>
Когда я отправляю форму, первый оператор (пересылка в Menu.jsp) выполняется правильно.
Я проверяю выполнение второго оператора с помощью модульного теста (который я сам не писал), который отправляет запрос на публикацию напрямую, а не через форму, как показано ниже:
@Test
public void testLoginSuccess() {
try {
WebClient webClient = new WebClient();
String jsonText = login(webClient, "bob3", "fred3");
DocumentContext dc = JsonPath.parse(jsonText);
Assert.assertEquals("success", dc.read("$['status']"));
} catch (IOException e) {
e.printStackTrace();
Assert.assertTrue(false);
}
}
Метод входа:
private String login(WebClient webClient, String username, String password)
throws MalformedURLException, IOException {
WebRequest requestSettings = new WebRequest(new URL(URL_BASE+"Login"), HttpMethod.POST);
requestSettings.setRequestParameters(new ArrayList());
requestSettings.getRequestParameters().add(new NameValuePair("user", username));
requestSettings.getRequestParameters().add(new NameValuePair("pass", password));
Page page = webClient.getPage(requestSettings);
String jsonText = page.getWebResponse().getContentAsString();
testLogger.log(Level.INFO, jsonText);
return jsonText;
}
Тест не пройден и выдает мне FailingHttpStatusCodeException в этой строке внутри метода входа в систему:
Page page = webClient.getPage(requestSettings);
Поскольку я сам не писал тест и не до конца понимал его код, я не могу сказать, почему он не работает, но он проходит, когда в моем сервлете нет if-else и, вместо этого, всегда выполняйте оператор else.
Спасибо за любую помощь.