Hier erfahren Sie, wie Sie echte Clientimplementierungen stummschalten, um für Unit-Tests einen Mock einzufügen. Mit einem Mock-Client und den Google Cloud Client Libraries for Rust können Sie kontrollierte, zuverlässige Unit-Tests schreiben, bei denen keine Netzwerkaufrufe erfolgen und keine Abrechnungsgebühren anfallen.
Abhängigkeiten
Für Rust sind mehrere Mocking-Frameworks verfügbar. In dieser Anleitung wird
mockall verwendet. Fügen Sie es als Entwicklungsabhängigkeit hinzu:
cargo add --dev mockall
Außerdem wird in dieser Anleitung der Speech-Client verwendet, um die
Beispiele leichter verständlich zu machen. Diese Konzepte gelten jedoch für alle Clients.
Fügen Sie der Datei Cargo.toml die erforderlichen Abhängigkeiten hinzu:
cargo add google-cloud-speech-v2 google-cloud-lro
Client simulieren
Wenn Sie Ihren Code mit einem Mock-Client testen möchten, definieren Sie eine Mock-Struktur, konfigurieren das erwartete Verhalten für Ihr Testszenario und fügen diesen Mock dann in Ihre Anwendungslogik ein. Das folgende Beispiel veranschaulicht diesen Workflow.
Fügen Sie zuerst use-Anweisungen hinzu, um den Code zu vereinfachen:
Angenommen, die Anwendung hat eine Funktion, die den Speech-Client verwendet, um GetRecognizer aufzurufen, das Feld name der Anfrage festzulegen und die Serverantwort zu verarbeiten.
Sie können testen, wie die Anwendung mit verschiedenen Antworten vom Dienst umgeht.
Definieren Sie als Nächstes die Mock-Struktur. Diese Struktur implementiert das
speech::stub::Speech-Trait.
Erstellen Sie eine Instanz des Mocks. Beachten Sie, dass das
mockall::mock! Makro dem Namen der
zuvor definierten Struktur das Präfix Mock voranstellt.
Legen Sie Erwartungen an den Mock fest. Sie können beispielsweise erwarten, dass der Code GetRecognizer mit einem bestimmten Namen aufruft und eine erfolgreiche Antwort vom Dienst simuliert.
Erstellen Sie einen Speech-Client mit dem Mock:
Rufen Sie die Funktion auf:
Prüfen Sie die Ergebnisse:
Fehler simulieren
Das Simulieren von Fehlern ähnelt dem Simulieren von Erfolgen. Um einen Fehler zu simulieren, ändern Sie das vom Mock zurückgegebene Ergebnis.
Ein mit from_stub() erstellter Client hat keine interne Wiederholungsschleife. Er gibt alle Fehler vom Stub direkt an die Anwendung zurück.
Nächste Schritte
Den vollständigen Code aus dieser Anleitung finden Sie in der Quelldatei im google-cloud-rust Repository auf GitHub.