trategie zum Unit-Testen eines Spring Cloud-Servi

Gab das folgende Spring Cloud-Setup: Adata-service mit Zugriff auf eine Datenbank, eineureka-service für die Registrierung und Ermittlung von Diensten und einen dritten Dienstbusiness-service Dies wird einer von verschiedenen Diensten sein, die Geschäftsfälle zusammenfassen.

Unit testet dasdata-service ist kein problem, ich schalte eureka einfach über @ a

eureka.client.enabled=false

und verwende eine In-Memory-Datenbank für meine Tests.

Um auf das @ zuzugreifdata-service vonbusiness-service, Ich benutze ein@FeignClient("data-service") Kommentierte Schnittstelle mit dem NamenDataClient welches ist@Autowired wo benötigt. Der Dienst wird von Eureka entdeckt, wenn beide ausgeführt werden. Dies funktioniert gut für ein produktionsähnliches Setup, bei dem alle Dienste ausgeführt werden.

Aber jetzt möchte ich einige Funktionen meines @ Unit-Tests durchführebusiness-service. Es wäre kein Problem, einen Testdienst mit @ zu starte

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
@SpringApplicationConfiguration(classes = Application.class)

wie ich mache indata-service. Das Problem ist die Eureka-abhängige Entdeckung meinesFeignClient ... also meine testklasse stürzt ab, weil das autowiring meinDataClient -Instanz funktioniert nicht.

Bin ich in der Lage, Spring zu sagen, eine gefälschte Instanz von @ zu verwendDataClient nur für meine tests? Oder ist der einzige Weg, um meine Tests zum Laufen zu bringen, eine zugängliche, laufende Instanz vondata-service und mein Eureka-Server?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage