问题描述
我在Spring Boot中有一个简单的HTML表单:
<form name="login" th:action="@{/login}" method="POST">
...
<button type="submit" id="submit" name="submit" >Login</button>
</form>
然后我有以下映射:
http.authorizeRequests()
// Allow anyone to use H2 (NOTE: NOT FOR PRODUCTION USE EVER !!! )
.antMatchers("/admin/h2/**").permitAll()
.antMatchers("/actuator/**").permitAll()
.antMatchers("/login/**").permitAll()
.antMatchers("/**").access(HASROLE_USER)
// Login Configuration
.and().formLogin()
.loginPage("/login/form")
.loginProcessingUrl("/login")
.permitAll()
.and().logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/login/form?logout")
.permitAll()
;
然后我创建了一个HTML单元测试用例:
@ExtendWith(SpringExtension.class)
@SpringBoottest(webEnvironment = SpringBoottest.WebEnvironment.RANDOM_PORT)
@Slf4j
public class SessionManagementTests {
@LocalServerPort
private int serverPort;
@Test
@displayName("HTML Unit Welcome Home Page")
public void testHomePage_htmlUnit() throws Exception {
HtmlPage page = webClient.getPage("http://localhost:"+serverPort+"/login/form");
final HtmlForm form = page.getFormByName("login");
log.info("*** getActionAttribute: {}",form.getActionAttribute());
HtmlInput username = page.getHtmlElementById("username");
username.setValueAttribute("user1");
HtmlInput password = page.getHtmlElementById("password");
password.setValueAttribute("user1");
HtmlButton submit = page.getHtmlElementById("submit");
// *** THROWS ERROR HERE ***
//
HtmlPage pageAfterClick = submit.click();
}
运行应用程序时,我可以手动登录,没有问题。 但是当我尝试运行单元测试时,我在 / login 上看到404。
错误:
com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 404 Not Found for http://localhost:49290/login
当我在 http:// localhost:8080 / actuator / mappings 上查看执行器映射时,我没有看到 / login 被映射。
我确实看到了 / login / form ,因为这是我的Thymeleaf登录视图页面。
但是我不知道如何测试我的登录信息。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)