FailingHttpStatusCode при попытке получить URL с HTML-модулем и Spring MVC Test
Я пытаюсь реализовать сквозные тесты с HTML-модулем и Spring MVC Test 5. Когда я запрашиваю целевую страницу, я получаю исключение 404. Я не понимаю, почему я не могу получить свою страницу, потому что, когда я изменяю URL, модуль HTML отправляет мне сообщение об ошибке, потому что он не может найти мой файл CSS.
С кодом ниже, когда я копирую / вставляю сгенерированный URL в моем браузере, я получаю страницу
Спасибо всем, кто может мне помочь.
Мой абстрактный класс для этого вида теста
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.springframework.context.MessageSource;
public abstract class TestEndToEnd {
protected final String serverUrl = "http://localhost/";
protected final String projectName = "games-explorer";
protected final List<Locale> supportedLocales;
protected final MessageSource messageSource;
public TestEndToEnd(MessageSource messageSource) {
supportedLocales = new ArrayList<>();
supportedLocales.add(Locale.FRENCH);
supportedLocales.add(Locale.ENGLISH);
this.messageSource = messageSource;
}
}
Класс с тестом
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
import com.lacunasaurus.core.configuration.CoreWebConfig;
import java.util.Locale;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.htmlunit.MockMvcWebClientBuilder;
import org.springframework.web.context.WebApplicationContext;
@ExtendWith(SpringExtension.class)
@WebAppConfiguration()
@ContextConfiguration(classes = {CoreWebConfig.class})
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class TestSignInEndToEnd extends TestEndToEnd {
@Autowired
private WebApplicationContext webApplicationContext;
private WebClient webClient;
@Autowired
public TestSignInEndToEnd(MessageSource messageSource) {
super(messageSource);
}
@BeforeAll
public void init() {
this.webClient = MockMvcWebClientBuilder.webAppContextSetup(webApplicationContext).build();
}
@Test
@DisplayName("It should display the sign-in page in the right locale")
public void shouldDisplayTheSignInPageWithRequiredFieldsInEachSupportedLocale() throws Exception {
for (Locale locale : supportedLocales) {
String url = messageSource.getMessage("core.website.signin.link.href", null, locale);
HtmlPage createSignInPage = webClient.getPage(this.serverUrl + this.projectName + url);
HtmlTextInput summaryInput = createSignInPage.getHtmlElementById("emailSignInForm");
Assertions.assertNotNull(createSignInPage);
Assertions.assertNotNull(summaryInput);
}
}
}
И трассировка стека
shouldDisplayTheSignInPageWithRequiredFieldsInEachSupportedLocale Time elapsed: 0.198 sec <<< ERROR!
com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 404 Not Found for http://localhost/games-explorer/connexion
at com.lacunasaurus.core.test.web.e2e.TestSignInEndToEnd.shouldDisplayTheSignInPageWithRequiredFieldsInEachSupportedLocale(TestSignInEndToEnd.java:48)
Results :
Tests in error:
TestSignInEndToEnd.shouldDisplayTheSignInPageWithRequiredFieldsInEachSupportedLocale:48 » FailingHttpStatusCode