[JAVA] Beispielcode zum Testen eines Spring Boot-Controllers mit MockMvc

Diese Umgebung

Zu testender Controller und Thymeleaf-Vorlage

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class FooBarController {

  @GetMapping("/")
  public ModelAndView topPage(ModelAndView mav) {
    mav.setViewName("index");
    mav.addObject("userName", "Alice");
    return mav;
  }
}
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>My App</title>
</head>
<body>
<p id="user-name" th:text="${userName}"></p>
</body>
</html>

Klasse zum Testen des Controllers

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpHeaders;
import org.springframework.test.web.servlet.MockMvc;

import static org.hamcrest.Matchers.containsString;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;

@SpringBootTest
@AutoConfigureMockMvc
public class FooBarControllerTest {

  @Autowired
  private MockMvc mockMvc;

  //Benutzeragentenzeichenfolge
  private static final String USER_AGENT =
    "Mozilla/5.0 (iPhone; CPU iPhone OS 13_0 like Mac OS X) " +
    "AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 " +
    "Mobile/15E148 Safari/604.1";

  @Test
  public void testTopPage() throws Exception {
    this.mockMvc.perform(
      //Zugriff mit der GET-Methode
      get("/")
      //Geben Sie den Anforderungsheader an
      .header(HttpHeaders.USER_AGENT, USER_AGENT))
      //Testen Sie den HTTP-Statuscode
      .andExpect(status().is2xxSuccessful())
      //Name der Testansicht
      .andExpect(view().name("index"))
      //Modellattribute testen
      .andExpect(model().attribute("userName", "Alice"))
      //Inhaltstyp testen
      .andExpect(content().contentType("text/html;charset=UTF-8"))
      //Testen Sie, ob die Seite den angegebenen Text enthält
      .andExpect(content().string(containsString("Alice")));
  }
}

Referenzmaterial

Recommended Posts

Beispielcode zum Testen eines Spring Boot-Controllers mit MockMvc
So schreiben Sie einen Komponententest für Spring Boot 2
Testen Sie den Controller mit Mock MVC im Spring Boot
[JUnit 5] Schreiben Sie einen Validierungstest mit Spring Boot! [Parametrisierungstest]
Ich habe jetzt einen Test mit Spring Boot + JUnit 5 geschrieben
Vom Erstellen eines Spring Boot-Projekts bis zum Ausführen einer Anwendung mit VS Code
Wovon ich süchtig war, als ich eine Spring Boot-Anwendung mit VS Code entwickelte
So führen Sie einen Komponententest für Spring AOP durch
Schreiben Sie den Testcode mit Spring Boot
Spring Boot Programmierung mit VS Code
Testen Sie den Spring Framework Controller mit Junit
Was tun, wenn im Testcode der Steuereinheit in Rails der Fehler "302" angezeigt wird?
So erstellen Sie mit Spring Boot einen eigenen Controller, der / error entspricht
[Mit Beispielcode] Grundlagen von Spring JDBC mit der Blog-App gelernt
Schreiben wir einen Testcode für die Anmeldefunktion mit Spring Boot
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
Ich möchte einen Unit Test schreiben!
Versuchen Sie es mit Spring Boot mit VS-Code
Formularklassenvalidierungstest mit Spring Boot
[SpringBoot] So schreiben Sie einen Controller-Test
[Rspec] Ablauf von der Einführung von Rspec bis zum Schreiben von Unit-Test-Code für das Modell
Erstellen Sie eine Website mit Spring Boot + Gradle (jdk1.8.x)
Informationen zum Entwerfen einer Spring Boot- und Unit-Test-Umgebung
Erstellen Sie mit Spring Boot eine einfache Such-App
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwendung des eingebauten h2db mit Federstiefel
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Übergang zu einem View Controller mit Swift WebKit
So schreiben Sie Testcode mit Basic-Zertifizierung
Versuchen Sie, die Migration mit Spring Boot Flyway zu automatisieren
[Java] Artikel zum Hinzufügen einer Validierung mit Spring Boot 2.3.1.
Ich wollte Spring Boot in einem Multiprojekt gradle
Erstellen Sie eine Spring Boot-Umgebung mit Windows + VS-Code
Erstellen Sie einen Web-API-Server mit Spring Boot
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
03. Ich habe eine Anfrage von Spring Boot an die Postleitzahlensuch-API gesendet
So führen Sie UT mit Excel als Testdaten mit Spring Boot + JUnit5 + DBUnit durch
[Spring-Beispielcode enthalten] So erstellen Sie ein Formular und erhalten mehrere Datensätze
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
Beispiel für Batch-Prozessdaten in der Datenbank mit Apache Camel Spring Boot-Startern
Einstellungen für die Verbindung zu MySQL mit Spring Boot + Spring JDBC
Jsons Anfrage im Unit Test des Controllers mit MockMvc
Ordnen Sie DTO automatisch Entitäten mit der Spring Boot-API zu
So führen Sie mit RxAndroid einen Komponententest mit JVM an einer Quelle durch
Beachten Sie, dass ich süchtig nach Stapelverarbeitung mit Spring Boot war
Ein Memorandum über die Sucht nach Spring Boot2 x Doma2
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
[Spring Boot] So erstellen Sie ein Projekt (für Anfänger)
[Einführung in Spring Boot] Senden Sie ein Formular mit thymeleaf
Ein Memorandum beim Erstellen eines REST-Service mit Spring Boot
Erstellen Sie mit Spring Security 2.1 eine einfache Demo-Site mit Spring Security
Booten nach Umgebung mit Spring Boot of Maven
Machen Sie einen Unit-Test mit Junit.
Versuch, SSR Vue.js mit Spring Boot und GraalJS zu verwenden
Mit Spring Boot herunterladen
Port C-Code mit vielen Typecasts zu Swift