0

Ich habe einen Integrationstest, der einen Controller testet. Ich gebe eine Anfrage ein und bekomme eine Antwort zurück und der Test besteht. Ich muss jedoch, bevor ich die Anfrage mache, eine Anfrage an den /authenticate Endpunkt stellen, um ein Token abzurufen, damit ich es in den Header der Anfrage setzen kann. Ich habe 2 FragenJava Spring Boot-Integrationstests Datenbankmodifikation und Authentifizierung

  1. Der Benutzername und das Kennwort, das ich lokal verwende, validiert gegen einen dev LDAP-Server. Wenn die Anwendung in höheren Umgebungen bereitgestellt wird, ändert sich der LDAP-Endpunkt in die entsprechende Ebene. In Umgebungen, die höher als DEV sind, wird der Integrationstest fehlschlagen, da der Benutzername/Passwort-Combo nicht funktioniert. Was ist der beste Weg, um den Benutzernamen/das Passwort an die Umgebung anzupassen? Gibt es einen besseren Weg dies zu tun, wie den Frühling zu zwingen, die Authentifizierung komplett zu vergessen?
  2. Der Integrationstest testet alle Endpunkte des Controllers wie /add, /get usw. Dies ändert leider die Datenbank (erwartet). Gibt es eine Möglichkeit, diese Tests auszuführen, aber nicht tatsächlich die Datenbank ändern?

Antwort

0

1) In Ihrem Unit-Test-Klasse Verwenden @TestPropertySource(properties = {"security.basic.enabled=false"}) Ihre Sicherheitseinstellung oder @TestPropertySource(locations="classpath:test.properties") außer Kraft zu setzen, wenn Sie eine völlig andere Eigenschaften Datei-Tests verwendet werden soll.

2) Sie könnten Mocks verwenden, oder wenn Sie wollen nicht Mocks in Ihrem Integrationstests verwenden, dann werden Sie die Datenbank nach jedem Test mit so etwas wie diese reinigen müssen:

@After  
public void tearDown() { 
    cleanupDatabase(); 
} 
+0

# 1 hat nicht funktioniert, es ist immer noch für die Authentifizierung fehlgeschlagen. – Richard

Verwandte Themen