Bruno ist ein leichter, Git-nativer Open-Source-API-Client. Er eignet sich gut, um Requests als Dateien zu versionieren, Requests auszuführen und Tests zu schreiben. Was Bruno nicht liefert: einen integrierten Mock-Server für Endpunkte, die noch nicht existieren. Wenn Sie einen Bruno-Mock-Server suchen, brauchen Sie daher entweder ein externes Tool, einen selbst geschriebenen Stub-Server oder einen spezifikationsgesteuerten Mock aus Ihrer OpenAPI-Datei.
Apidog noch heute ausprobieren
Kurz gesagt: Bruno kann Anfragen senden und Assertions ausführen, aber keine gefälschten Endpunkte bereitstellen, die Beispielantworten zurückgeben. Für Mocking müssen Sie den Mock außerhalb von Bruno betreiben.
Warum Sie einen Mock-Server benötigen
Ein Mock-Server liefert definierte Antworten für API-Endpunkte, die noch nicht implementiert, instabil oder schwer reproduzierbar sind. Das ist besonders nützlich für:
- Parallele Entwicklung: Frontend-, Mobile- und Backend-Teams arbeiten gegen denselben API-Vertrag.
-
Fehlerpfad-Tests: Sie können gezielt
429,500,503oder fehlerhafte Payloads auslösen. - Demos und Prototypen: Workflows funktionieren ohne Live-Backend, Datenbank oder Zugangsdaten.
- Stabile CI: Tests hängen nicht von Staging-Ausfällen, Rate Limits oder instabilen Testdaten ab.
Typische Szenarien:
| Szenario | Was der Mock zurückgibt | Warum es sonst schwierig ist |
|---|---|---|
| Ratenbegrenzung erreicht |
429 + Retry-After Header |
Backend drosselt selten auf Anfrage |
| Serverausfall |
500 / 503
|
Staging lässt sich nicht gezielt für Tests unterbrechen |
| Langsame Antwort | Verzögerte Antwort | Reale Latenz ist schwer reproduzierbar |
| Leeres Ergebnis |
200 mit []
|
Hängt vom aktuellen Datenzustand ab |
| Fehlerhaftes Payload | Body ohne erforderliches Feld | Backend-Validierung verhindert solche Fälle normalerweise |
Hat Bruno einen Mock-Server?
Nein. Bruno konzentriert sich auf:
- Requests senden
- Collections als einfache Dateien organisieren
- Tests und Assertions ausführen
- API-Workflows Git-nativ verwalten
Es gibt aber keine native Funktion, die eine gespeicherte Anfrage in einen laufenden Stub-Endpunkt verwandelt.
In der Praxis nutzen Bruno-Teams meist eine dieser zwei Optionen:
Externes Mocking-Tool verwenden
Zum Beispiel Mockoon, WireMock, Prism oder json-server. Sie definieren dort die Antworten und verweisen Bruno auf die Mock-URL.Eigenen Stub-Server schreiben
Zum Beispiel mit Express, Flask oder FastAPI. Das ist für wenige Endpunkte schnell, wird bei wachsender API aber pflegeintensiv.
Beide Wege funktionieren. Beide bedeuten aber auch: Der Mock lebt außerhalb Ihrer Bruno-Collection.
Beispiel: Minimaler Stub-Server mit Express
Wenn Sie nur einen schnellen lokalen Mock brauchen, reicht ein kleiner Express-Server:
import express from "express";
const app = express();
app.use(express.json());
app.get("/users/:id", (req, res) => {
res.json({
id: req.params.id,
name: "Max Mustermann",
email: "max@example.com",
created_at: new Date().toISOString()
});
});
app.get("/rate-limit", (req, res) => {
res.set("Retry-After", "60");
res.status(429).json({
error: "Too Many Requests"
});
});
app.listen(3000, () => {
console.log("Mock server running at http://localhost:3000");
});
Danach können Sie in Bruno gegen diese URL testen:
GET http://localhost:3000/users/123
Das ist praktisch für kleine Tests. Der Nachteil: Sobald sich Ihre API-Spezifikation ändert, müssen Sie den Stub manuell aktualisieren.
Die Kosten von nachträglich hinzugefügtem Mocking
Eine separate Mock-Schicht ist machbar, erzeugt aber schnell Reibung:
- Drift: Spezifikation, Bruno-Requests und Mock-Definitionen liegen an verschiedenen Stellen.
- Setup-Aufwand: Neue Teammitglieder müssen zusätzlich ein Mocking-Tool installieren und konfigurieren.
- Manuelle Payloads: Beispielantworten für Felder, Statuscodes und Edge Cases müssen gepflegt werden.
- Statische Daten: Einfache Stubs geben oft immer dieselbe Antwort zurück und verdecken dadurch Fehler.
Wenn ein Endpunkt geändert wird, müssen Sie typischerweise mehrere Artefakte aktualisieren:
OpenAPI-Spezifikation
↓
Bruno-Request
↓
Externer Mock / Stub-Server
Vergessen Sie eine Stelle, testen Sie gegen veraltetes Verhalten.
Eine detailliertere Einordnung finden Sie in dieser Analyse zur Bruno-Alternative als All-in-One-API-Plattform.
Besser: Mock-Server aus Ihrer OpenAPI-Spezifikation generieren
Der sauberere Ansatz ist, den Mock aus dem API-Vertrag zu erzeugen, den Sie ohnehin pflegen.
Apidog kann eine OpenAPI-Spezifikation importieren oder direkt verwalten und daraus einen funktionierenden Mock-Server generieren. Dadurch verwenden Design, Mocking, Tests und Dokumentation dieselbe Quelle.
Der Workflow sieht so aus:
OpenAPI-Spezifikation
↓
Mock-Server
↓
Frontend / Mobile App / Tests
Der Vorteil: Wenn sich das Schema ändert, ändert sich auch der Mock auf Basis derselben Definition.
Was ein spezifikationsgesteuerter Mock praktisch löst
Ein aus der Spezifikation generierter Mock reduziert manuelle Arbeit:
- Schema-basierte Antworten: Felder und Typen werden aus OpenAPI gelesen.
-
Plausiblere Daten: Ein
email-Feld kann wie eine E-Mail aussehen, eincreated_at-Feld wie ein Datum. - Dynamische Responses: Antworten können anhand des Schemas generiert werden, statt immer denselben statischen Body zurückzugeben.
- Weniger Setup: Sie müssen keinen separaten Server schreiben oder hosten.
- Synchronisierung: Aktualisieren Sie die Spezifikation, bleibt der Mock am selben Vertrag ausgerichtet.
Wenn Ihr Team Git-zentriert arbeitet, bleibt die Spezifikation weiterhin diff-fähig und reviewbar. Das passt gut zu einem Git-nativen API-Workflow. Weitere Beispiele finden Sie in den Anwendungsfällen für API-Mocking.
Kurzanleitung: Von OpenAPI zur Mock-URL
So erstellen Sie einen Mock aus einer bestehenden Spezifikation:
OpenAPI-Spezifikation importieren
Importieren Sie Ihre OpenAPI- oder Swagger-Datei oder verwenden Sie eine Spezifikations-URL.Endpunkt öffnen
Jeder importierte Endpunkt enthält bereits Pfad, Methode, Parameter, Request Body und Response-Schema.Mock-URL kopieren
Apidog stellt eine Mock-URL bereit, ohne dass Sie einen separaten Server deployen müssen.Request senden
Rufen Sie die Mock-URL aus Ihrem Frontend, Ihrer mobilen App, Ihrer Testsuite oder Bruno auf.Fehlerfälle ergänzen
Definieren Sie bei Bedarf spezielle Antworten wie429,500, leere Listen oder fehlerhafte Payloads.
Beispielhafter Testablauf:
1. Backend-Endpunkt ist noch nicht fertig
2. OpenAPI-Schema definiert GET /users/{id}
3. Mock-URL wird generiert
4. Frontend ruft Mock-URL auf
5. UI- und Fehlerpfade können sofort getestet werden
Wann Bruno plus externes Mocking ausreicht
Sie müssen nicht immer auf eine spezifikationsgesteuerte Lösung wechseln. Bruno plus externes Mocking reicht oft aus, wenn:
- Sie nur ein oder zwei Endpunkte lokal simulieren.
- Ein statischer Stub genügt.
- Sie bereits Mockoon, WireMock oder Prism einsetzen.
- Ihr Team bewusst bei Brunos dateibasierten Collections bleiben möchte.
- Die zusätzliche Mock-Wahrheitsquelle keine Wartungsprobleme verursacht.
Der Trade-off ist klar:
| Ansatz | Vorteil | Nachteil |
|---|---|---|
| Bruno + externes Mocking | Leichtgewichtig, flexibel | Mock muss separat gepflegt werden |
| Eigener Stub-Server | Maximale Kontrolle | Manuelle Implementierung und Wartung |
| OpenAPI-basierter Mock | Eine Quelle der Wahrheit | Breitere Plattform im Workflow |
Wählen Sie den Ansatz danach, wie groß Ihre API ist und wie oft sich Endpunkte ändern.
FAQ
Hat Bruno einen integrierten Mock-Server?
Nein. Bruno ist ein API-Client zum Senden von Anfragen und Ausführen von Tests. Einen nativen Mock-Server gibt es nicht. Für Mocking verwenden Sie ein externes Tool oder schreiben einen eigenen Stub-Server.
Was ist der einfachste Weg, Mocking zu einem Bruno-ähnlichen Workflow hinzuzufügen?
Der einfachste nachhaltige Weg ist ein Mock aus Ihrer OpenAPI-Spezifikation. Dadurch müssen Sie Mock-Definitionen nicht separat pflegen und können Design, Mocking, Tests und Dokumentation auf denselben Vertrag stützen.
Kann ich Bruno weiterverwenden und trotzdem einen Mock-Server nutzen?
Ja. Sie können Bruno weiter als Client verwenden und Requests gegen Mockoon, WireMock, Prism, json-server, einen eigenen Stub-Server oder eine generierte Mock-URL senden. Der Unterschied liegt darin, wo Sie die Mock-Daten pflegen.
Wann lohnt sich ein spezifikationsgesteuerter Mock?
Wenn Ihre API wächst, mehrere Teams parallel arbeiten oder Sie viele Fehlerpfade testen müssen. Dann spart eine zentrale OpenAPI-basierte Quelle meist mehr Zeit als getrennte Mock-Definitionen.
Wenn die Pflege einer separaten Mock-Schicht mehr kostet, als sie spart, testen Sie einen spezifikationsgesteuerten Mock. Importieren Sie Ihre OpenAPI-Datei in Apidog und erzeugen Sie daraus eine Mock-URL, ohne einen zusätzlichen Server zu hosten.

Top comments (0)