Wenn Sie eine API über die Befehlszeile simulieren, ist die Lizenz genauso wichtig wie die Feature-Liste. Ein Mock-Server, dessen Quellcode Sie lesen, selbst hosten und ohne Lizenzanzahl in CI ausführen können, unterscheidet sich grundlegend von einem gehosteten SaaS-Mock hinter einem Login. Dieser Leitfaden konzentriert sich auf Open-Source-Tools, die Sie klonen, inspizieren und kostenlos ausführen können.
Probieren Sie Apidog noch heute aus
Jedes hier aufgeführte Tool ist unter einer permissiven Lizenz (MIT oder Apache-2.0) quelloffen, liegt in einem öffentlichen GitHub-Repository und lässt sich ohne Konto selbst hosten. Das ist der Filter. Wenn Sie kleinere, eigenständige Binärdateien suchen, die nach Startgeschwindigkeit und Installationsgröße geordnet sind, lesen Sie stattdessen die begleitenden Empfehlungen für leichtgewichtige Mock-Server. Diese Liste konzentriert sich auf Quellcode und Selbst-Hosting, sodass auch eine schwerere, selbst hostbare Plattform enthalten sein kann.
Für jedes Tool erhalten Sie Lizenz, Installations- und Startbefehl, einen konkreten Einsatzfall sowie die wichtigsten Einschränkungen. Wenn Sie zusätzlich kommerzielle Optionen vergleichen möchten, bieten der Überblick über die besten API-Mock-Tools und die Übersicht der REST-API-Mocking-Tools eine breitere Einordnung.
Eine kurze, ehrliche Anmerkung vor der Liste: Apidog ist nicht Open Source, sondern eine Freemium-Kommerzplattform. Es erscheint einmal am Ende als integrierte Alternative, klar gekennzeichnet und nicht als Open-Source-Eintrag. Alle sechs Tools in den folgenden Abschnitten sind tatsächlich Open Source.
Was ein CLI-Mock-Tool zu Open Source macht
Drei Kriterien entscheiden, ob ein Tool auf diese Liste gehört:
- Lizenz: Der Quellcode muss öffentlich unter einer permissiven Lizenz verfügbar sein. Alle hier genannten Tools stehen unter MIT oder Apache-2.0. Sie können sie lesen, forken und ohne Lizenzgebühren oder Benutzerlimits in eigenen Projekten einsetzen.
- Selbst hostbar: Das Tool muss auf dem Laptop, in einem Container oder auf einem eigenen Server laufen. Es darf keine gehostete Steuerungsebene oder Kontopflicht voraussetzen. So bleibt der Mock auch in isolierten CI-Runnern nutzbar.
- Offen gepflegt: Ein öffentliches GitHub-Repository mit Commit-Historie, Issues und Releases ist erforderlich. Sterne sind nur ein grobes Signal; aktuelle Commits und getaggte Releases sind aussagekräftiger.
Nicht bewertet werden rohe Geschwindigkeit oder Installationsgröße. Dafür gibt es den leichtgewichtigen Ansatz. Hier kann auch eine größere, containerbasierte Plattform sinnvoll sein, solange Quellcode und Lizenz offen sind.
Prism (Stoplight)
Prism verwandelt eine OpenAPI- oder Postman-Datei in einen laufenden Mock-Server. Sie übergeben eine Spezifikation, und Prism liefert Beispielantworten, validiert eingehende Anfragen gegen das Schema und kann als Validierungs-Proxy vor einer echten API laufen.
- Lizenz: Apache-2.0
- Repository: stoplightio/prism
npm install -g @stoplight/prism-cli
prism mock https://raw.githubusercontent.com/stoplightio/prism/master/examples/petstore.oas2.yaml
Der Befehl startet einen Mock auf http://127.0.0.1:4010. Die Spezifikation steuert das Verhalten vollständig:
curl http://127.0.0.1:4010/pets
GET /pets liefert das Beispiel aus Ihrem OpenAPI-Dokument zurück. Senden Sie eine ungültige Nutzlast, zeigt Prism, welchen Teil des Schemas die Anfrage verletzt.
Am besten geeignet für: spezifikationsgesteuertes Contract-Mocking, bei dem die OpenAPI-Datei die einzige Quelle der Wahrheit ist. Besonders nützlich ist der Validierungs-Proxy-Modus, um Abweichungen zwischen Spezifikation und echter API zu erkennen.
Einschränkungen: Antworten stammen aus Beispielen und Schema. Die Qualität des Mocks hängt daher direkt von der Qualität der Spezifikation ab. Zustandsbehaftetes Verhalten wie „Datensatz erstellen und später wieder abrufen“ ist nicht integriert. Außerdem benötigen Sie eine Node-Runtime.
Mockoon CLI
Mockoon ist vor allem für seine Desktop-App bekannt. Die CLI verwendet jedoch dieselbe Engine ohne GUI und eignet sich für CI und Selbst-Hosting. Sie können eine Mockoon-Umgebung oder direkt eine OpenAPI-Datei bereitstellen.
- Lizenz: MIT
- Repository: mockoon/mockoon
npm install -g @mockoon/cli
mockoon-cli start --data ./environment.json --port 3000
Alternativ starten Sie direkt aus einer OpenAPI-Datei:
mockoon-cli start --data ./openapi.yaml --port 3000 --watch --log-transaction
-
--watchlädt den Mock bei Dateiänderungen neu. -
--log-transactionschreibt vollständige Anfrage- und Antwort-Logs.
Am besten geeignet für: umfangreiche, regelbasierte Antworten ohne eigenen Mock-Code. Mockoon unterstützt Response-Templating, bedingte Regeln und Proxying. So kann ein Endpunkt abhängig von Parametern, Headern oder Request-Bodies unterschiedliche Antworten liefern.
Einschränkungen: Der angenehmste Weg zum Erstellen von Umgebungen ist die Desktop-App. Environment-JSON manuell zu bearbeiten, kann umständlich sein. Auch die Templating-Syntax benötigt Einarbeitung.
json-server
json-server ist ein schneller Weg, eine REST-API zu simulieren. Geben Sie ihm eine JSON-Datei, und es erzeugt CRUD-Routen für GET, POST, PUT, PATCH und DELETE. Änderungen werden in die Datei zurückgeschrieben.
- Lizenz: MIT
- Repository: typicode/json-server
Erstellen Sie zunächst eine db.json:
{
"posts": [
{
"id": 1,
"title": "Erster Beitrag",
"published": true
}
]
}
Starten Sie anschließend den Server:
npx json-server db.json
Danach stehen unter anderem diese Endpunkte bereit:
curl http://localhost:3000/posts
curl http://localhost:3000/posts/1
curl -X POST http://localhost:3000/posts \
-H 'Content-Type: application/json' \
-d '{"title":"Neuer Beitrag","published":false}'
Mit dem posts-Array erhalten Sie sofort GET /posts, GET /posts/1, POST /posts und die weiteren CRUD-Endpunkte. Zusätzlich stehen Filterung, Sortierung und Paginierung über Abfrageparameter zur Verfügung. Neue Datensätze bleiben in db.json erhalten.
Am besten geeignet für: Frontend-Entwicklung, bevor das Backend existiert. Anders als viele spezifikationsgesteuerte Tools ist json-server sofort zustandsbehaftet. Dank npx ist keine globale Installation erforderlich.
Einschränkungen: Das Tool ist auf typische REST-Strukturen ausgelegt und passt nicht zu jeder individuellen API. Es importiert kein OpenAPI-Dokument; die JSON-Datei ist der Vertrag. Für Lasttests oder produktionsähnliches Verhalten ist es nicht gedacht.
WireMock
WireMock ist ein umfangreiches Open-Source-Tool für HTTP-Mocking. Es läuft als eigenständiger Prozess, lässt sich über eine JSON-Admin-API oder Stub-Dateien konfigurieren und unterstützt Request-Matching, Response-Templating, zustandsbehaftete Szenarien, Fehlereinleitung sowie Record-and-Replay.
- Lizenz: Apache-2.0
- Repository: wiremock/wiremock
docker run -it --rm -p 8080:8080 wiremock/wiremock:latest
Registrieren Sie einen ersten Stub über die Admin-API:
curl -X POST http://localhost:8080/__admin/mappings \
-H 'Content-Type: application/json' \
-d '{
"request": {
"method": "GET",
"url": "/hello"
},
"response": {
"status": 200,
"body": "world"
}
}'
Testen Sie den Stub:
curl http://localhost:8080/hello
# world
Alternativ können Sie JSON-Stubs in einem mappings/-Verzeichnis ablegen und dieses in den Container mounten.
Am besten geeignet für: komplexe Testszenarien. WireMock kann zustandsbehaftete Abläufe, Verzögerungen und Fehler simulieren, etwa um instabile Drittanbieter-APIs nachzustellen. Der Proxy- und Recording-Modus hilft, echte APIs aufzuzeichnen und später wiederzugeben.
Einschränkungen: WireMock basiert auf der JVM. Sie benötigen daher Docker oder eine Java-Laufzeitumgebung. Die Konfigurationsfläche ist groß und für einfache Mocks oft mehr als nötig. Einen einzelnen „Spezifikation lesen und starten“-Befehl wie bei Prism gibt es nicht.
MockServer
MockServer kombiniert HTTP(S)-Mock und Proxy auf einem Port und zielt direkt auf Integrationstests. Es kann APIs simulieren, Live-Traffic proxien und aufzeichnen sowie Fehler einschleusen. Neuere Versionen unterstützen HTTP/2, gRPC und WebSocket.
- Lizenz: Apache-2.0
- Repository: mock-server/mockserver
docker run -d --rm -p 1080:1080 mockserver/mockserver
Registrieren Sie eine Erwartung:
curl -X PUT 'http://localhost:1080/mockserver/expectation' \
-H 'Content-Type: application/json' \
-d '{
"httpRequest": {
"path": "/order"
},
"httpResponse": {
"body": "{\"status\":\"ok\"}"
}
}'
Prüfen Sie die Antwort:
curl http://localhost:1080/order
# {"status":"ok"}
MockServer-Clients für Java, JavaScript, Ruby und weitere Sprachen erlauben es, dieselben Erwartungen direkt aus Testcode statt über curl zu konfigurieren.
Am besten geeignet für: Mocking und Proxying an einem Ort sowie Fehlereinleitung. Wenn Sie prüfen müssen, ob eine Anfrage eine bestimmte Anzahl von Malen erfolgt ist, ist die Verifizierungs-API darauf ausgelegt. Besonders passend für JVM-lastige Stacks. Falls es nicht ganz passt, vergleichen Sie MockServer-Alternativen.
Einschränkungen: Wie WireMock ist MockServer JVM-basiert. Das Erwartungs-JSON kann ausführlich werden. Die Überschneidung mit WireMock ist groß; wählen Sie anhand der Client-Bibliothek, die besser zu Ihrem Test-Stack passt.
Microcks
Microcks ist die Plattform-Option und ein Inkubationsprojekt der Cloud Native Computing Foundation. Es erzeugt Live-Mocks aus OpenAPI, AsyncAPI, gRPC, GraphQL, Postman-Sammlungen und SoapUI-Projekten. Dieselben Verträge lassen sich anschließend für Konformitätstests gegen reale Implementierungen verwenden.
Microcks unterstützt nicht nur HTTP, sondern auch ereignisgesteuerte und asynchrone Protokolle.
- Lizenz: Apache-2.0
- Repository: microcks/microcks
Starten Sie das All-in-One-Image:
docker run -d --name microcks -p 8585:8080 quay.io/microcks/microcks-uber:latest
Öffnen Sie danach http://localhost:8585 und importieren Sie eine Spezifikation, um Mock-Endpunkte bereitzustellen.
Die begleitende microcks-cli steuert eine laufende Microcks-Instanz aus CI heraus:
microcks-cli import 'petstore.yaml:true' \
--microcksURL=http://localhost:8585/api \
--keycloakClientId=... \
--keycloakClientSecret=...
Am besten geeignet für: Teams, die einen verwalteten Katalog von Mocks über viele APIs und Protokolle hinweg benötigen und Vertragstests integrieren wollen. Das Mocking asynchroner und ereignisgesteuerter Systeme wie Kafka oder MQTT ist in diesem Bereich besonders wertvoll.
Einschränkungen: Microcks ist ein Server und keine einzelne Binärdatei. Die microcks-cli importiert Artefakte und löst Tests in einer laufenden Instanz aus, dient aber nicht selbst als Mock-Server. Für einen einzelnen lokalen Mock ist Microcks daher aufwändiger als Prism oder json-server.
Ein ehrlicher Exkurs: Apidog
Apidog ist nicht Open Source und erhält deshalb keinen nummerierten Platz. Wenn Sie aber festgestellt haben, dass die Open-Source-Tools unterschiedliche Bereiche abdecken — spezifikationsgesteuerte Mocks, zustandsbehaftetes CRUD und Vertragstests — und Sie diese nicht selbst kombinieren möchten, ist es eine Alternative.
Apidog ist eine Freemium-Plattform, deren kostenlose Stufe Mocking beinhaltet. Mit apidog mock in der apidog-cli können Sie Mock-Erwartungen vom Terminal aus neben Design, Tests und Dokumentation in einem Projekt verwalten. Smart Mock generiert automatisch realistische Feldwerte aus Ihrem Schema, sodass Sie Beispiel-Bodies nicht manuell schreiben müssen.
Der Kompromiss ist klar: Sie erhalten einen integrierten Workflow und eine kostenlose Stufe statt Open Source und Selbst-Hosting. Wenn Open Source oder isoliertes Selbst-Hosting zwingend erforderlich ist, wählen Sie eines der sechs Tools oben. Wenn ein integrierter Design-zu-Mock-Workflow wichtiger ist, ist Apidog die Alternative zum Kombinieren mehrerer Tools.
Wie man wählt
| Tool | Am besten für | Installation | Lizenz | Anmerkungen |
|---|---|---|---|---|
| Prism | Spezifikationsgesteuerte Mocks und Validierungs-Proxy | npm i -g @stoplight/prism-cli |
Apache-2.0 | OpenAPI/Postman rein, Mock raus; zustandslos |
| Mockoon CLI | Regelbasierte Antworten ohne Code | npm i -g @mockoon/cli |
MIT | In der App entwerfen, headless ausführen |
| json-server | Zustandsbehaftetes Fake-REST fürs Frontend | npx json-server db.json |
MIT | Vollständiges CRUD mit Persistenz, keine Konfiguration |
| WireMock | Komplexe Testszenarien und Fehler | docker run wiremock/wiremock |
Apache-2.0 | JVM; Record-and-Replay; zustandsbehaftet |
| MockServer | Mock, Proxy und Verifizierung | docker run mockserver/mockserver |
Apache-2.0 | JVM; HTTP/2, gRPC und WebSocket |
| Microcks | Verwalteter Multi-API-/Protokoll-Katalog | docker run microcks-uber |
Apache-2.0 | CNCF-Plattform; CLI ist Client, kein Server |
| Apidog (nicht OSS) | Integriertes Design-zu-Mock | npm i -g apidog-cli |
Freemium | Kostenlose Stufe; apidog mock im Projekt |
Wählen Sie nach Form, nicht nach Popularität:
- OpenAPI-Datei direkt lesen und durchsetzen: Starten Sie mit Prism.
-
Zustandsbehaftetes CRUD, bevor das Backend existiert: Verwenden Sie
json-server. - Komplexe Tests mit Fehlern, Verzögerungen und Record-and-Replay: Nutzen Sie WireMock oder MockServer und wählen Sie anhand Ihrer bevorzugten Client-Bibliothek.
- Gemeinsamer Multi-Protokoll-Katalog mit Vertragstests: Setzen Sie Microcks ein.
Welche Form zu welchem Szenario passt, zeigt auch der Leitfaden zu API-Mocking-Anwendungsfällen.
Zusammenfassung
Open-Source-CLI-Mock-Tools liefern Mock-Server, deren Code Sie lesen, selbst hosten und kostenlos in CI ausführen können.
- Prism und json-server decken häufige Fälle mit einem Befehl ab.
- Mockoon CLI eignet sich für regelbasierte Antworten ohne eigenen Mock-Code.
- WireMock und MockServer bewältigen anspruchsvolle Testszenarien.
- Microcks erweitert das Konzept zu einem verwalteten Katalog über mehrere Protokolle hinweg.
Alle sechs Tools sind unter MIT oder Apache-2.0 lizenziert, selbst hostbar und in öffentlichen GitHub-Repositories verfügbar.
Wenn Sie Mocks lieber direkt neben API-Design, Tests und Dokumentation verwalten möchten, ohne separate Tools zu verbinden, laden Sie Apidog herunter und testen Sie apidog mock in der kostenlosen Stufe. Es ist nicht Open Source, bietet aber einen integrierten Ablauf von der Befehlszeile bis zu CI.
Top comments (0)