Echolot
Mocks

Mocks

Lokale Mock-Server aus von Hand geschriebenen Routen mit Beispieldaten oder aus einer OpenAPI-Spec; lege fest, was sie antworten, prüfe Anfragen und teile sie im Netzwerk.

Ein Mock ist ein Server an einem Port deines Macs, der antwortet wie eine API. Frontends, Apps und Tests können ihn nutzen, bevor es die API gibt oder solange die echte ausfällt. Ein Mock antwortet aus zwei Quellen, einzeln oder zusammen:

  • Von Hand angelegte Routen: eine Methode, ein Pfad und das JSON, XML oder der Text, den er antwortet. Bodys können Beispieldaten enthalten ({{$randomFullName}}, {{$randomEmail}}), die sich bei jeder Anfrage ändern, und Teile der Anfrage ({{request.params.id}}). Eine Spec ist nicht nötig. Siehe Routen und Beispieldaten.
  • Eine OpenAPI-Spec: Jede Operation antwortet mit den Antworten, die die Spec dokumentiert, mit ihren Beispielen oder mit einem Body, der aus ihren Schemas entsteht. Anfragen, die gegen die Spec verstoßen, bekommen eine 400, die sagt, warum; der Mock zeigt dir also auch, wenn ein Client etwas Falsches sendet.

Für Antworten, die Code oder Zustand brauchen, kann ein Mock außerdem Routen in JavaScript haben.

Öffne die Seite mit Mocks in der Modulauswahl der Seitenleiste oder mit ⌘4.

Ein laufender Mock des Alpenglow-Demo-Shops: oben seine Adresse mit „In Umgebung verwenden“ und „Stoppen“, die Karte „Einstellungen“ mit seiner Spec, die Karte „Routen“ mit zwei von Hand angelegten Routen und unten das Protokoll der beantworteten Anfragen, aus den Routen und aus der Spec

Mock erstellen

Klicke in der Seitenleiste im Kopf von Mocks auf + oder nutze die Knöpfe auf der leeren Seite:

  • Neuer Mock erstellt einen Mock aus Routen. Er beginnt mit einer Route, GET /users, die fünf Beispielnutzer antwortet, damit du ihn starten und sehen kannst, was ein Body kann. Ändere sie oder füge eigene hinzu; siehe Routen und Beispieldaten.
  • Mock von einer Spec (im Menü + oder als Mock einer Spec auf der leeren Seite) erstellt einen Mock aus einer Spec des Arbeitsbereichs, etwa Mock von Alpenglow demo shop.

Der neue Mock bekommt den nächsten freien Port ab 4010. Seine Einstellungen und Routen sind eine Datei im Ordner mocks des Arbeitsbereichs, sodass ein Team seine Mocks über Git teilt.

Ein Mock aus Routen kann auch eine Spec bereitstellen, und ein Mock aus einer Spec kann Routen haben: Spec bereitstellen in der Karte Einstellungen fügt eine hinzu, Ändern › Spec nicht mehr bereitstellen nimmt sie weg.

Starten und stoppen

Klicke auf Start (⌘R). Die Leiste oben zeigt die Adresse des Mocks, etwa http://127.0.0.1:4010. Stellt der Mock eine Spec bereit, deren Server-URL einen Pfad hat (https://demo.echolot.dev/v1), endet die Adresse damit (http://127.0.0.1:4010/v1), und der Mock antwortet unter diesem Pfad; Anfragen dürfen ihn auch weglassen. Der Kopieren-Knopf neben der Adresse kopiert sie.

Probiere es im Terminal aus:

curl http://127.0.0.1:4010/users

Stoppen hält ihn an. Die Seitenleiste zeigt, welche Mocks laufen: ein grüner Punkt und der Port neben dem Titel der Spec oder die Anzahl der Routen (Alpenglow demo shop · :4010, 3 routes · stopped). Klicke einen Mock mit der rechten Maustaste an für Start oder Stoppen und Löschen …. Löschen fragt zuerst nach; die Einstellungsdatei kommt in den Papierkorb, die Spec bleibt.

Mocks laufen, solange das Fenster ihres Arbeitsbereichs geöffnet ist. Ein laufender Mock übernimmt Änderungen an seinen Routen, seiner Spec und seinen Einstellungen, ohne anzuhalten. Ein Port, den ein anderes Programm belegt, lässt sich nicht nehmen: Echolot meldet das; wähle einen anderen Port.

Anfragen an den Mock senden

  • Anfragen erstellen in der Karte Routen legt einen Ordner mit Anfragen an, die die Routen des Mocks aufrufen, wobei {{baseUrl}} auf die Adresse des Mocks zeigt. Siehe Anfragen aus Routen.
  • In Umgebung verwenden (solange der Mock läuft) erstellt eine Umgebung namens Mock: <name>, deren {{baseUrl}} die Adresse des Mocks ist, und macht sie aktiv. Anfragen, die mit {{baseUrl}} beginnen, etwa die, die Anfragen erzeugen aus einer Spec macht, gehen dann an den Mock, bis du eine andere Umgebung wählst. Siehe Umgebungen.

Einstellungen

EinstellungWas sie bewirkt
NameDer Name des Mocks in der Seitenleiste.
SpecDie Spec, die er bereitstellt, oder Keine: Nur seine Routen antworten. Öffnen öffnet die Spec auf der Seite „Specs“; Spec bereitstellen und Ändern wählen eine aus oder beenden das Bereitstellen.
PortDer Port, auf dem er lauscht, von 1 bis 65535.
Anderen Geräten im Netzwerk antwortenLauscht auf jeder Netzwerkschnittstelle, zum Testen von einem Telefon oder einem Container aus. Aus: Nur dieser Mac erreicht ihn.
VerzögernMillisekunden, die vor jeder Antwort gewartet wird, bis 60.000, um eine langsame API auszuprobieren.
FehlerDer Anteil der Anfragen in Prozent, die ein eingefügtes 500 bekommen, um zu sehen, wie ein Client damit umgeht.
PrüfungenMit einer Spec: Anfragen ablehnen, die gegen die Spec verstoßen (400 mit den Gründen). Standardmäßig an.

Welche Antwort eine Anfrage bekommt

Eine Anfrage geht an die erste der folgenden Stellen, die für ihre Methode und ihren Pfad eine Antwort hat:

  1. Die Routen in JavaScript des Mocks. Eine Route, die nichts festlegt, gibt die Anfrage weiter.
  2. Seine von Hand angelegten Routen. Eine Route kann mehrere Antworten haben; eine Anfrage kann eine nach Name oder Status anfordern, Regeln für die Anfrage wählen andere aus, und sonst antwortet die Standardantwort der Route.
  3. Die Operationen der Spec, wie unten beschrieben.

Wörtliche Pfadsegmente haben Vorrang vor Parametern, /pets/mine wird also vor /pets/{id} gewählt, bei Routen und Operationen gleichermaßen.

Für eine Operation der Spec wählt der Mock die Antwort in dieser Reihenfolge:

  1. Was die Anfrage verlangt: ein Header Prefer: code=404, example=empty oder die Header x-mock-response-code und x-mock-response-name von Postman.
  2. Die Antwort, die in der Karte Antworten der Spec für die Operation gewählt ist.
  3. Die erste Erfolgsantwort der Operation.

Die Karte Antworten der Spec listet jede Operation mit einem Menü: Erster Erfolg oder einer der dokumentierten Status und, bei einem Status mit mehreren Beispielen, das Beispiel. Die Auswahl wird mit dem Mock gesichert.

Der Body ist das benannte Beispiel der Antwort (das angeforderte oder das erste), ihr einzelnes example oder sonst ein Body, der aus ihrem Schema entsteht: Beispieldaten, die zu Typ, Format und Name jedes Felds passen (eine E-Mail-Adresse für ein Feld mit dem Format email), innerhalb der Grenzen des Schemas und bei jeder Anfrage neu erzeugt. Ein Feld, das wie ein Pfadparameter heißt, wiederholt dessen Wert. Dokumentiert die Spec mehrere Medientypen, wählt der Header Accept der Anfrage einen aus. Die dokumentierten Header und der Inhaltstyp werden ebenfalls gesendet. Ein 204, ein 304 und Antworten auf HEAD haben keinen Body.

Weitere Antworten, die der Mock gibt:

StatusWann
400Der Mock stellt eine Spec bereit, die Prüfungen sind an und die Anfrage verstößt dagegen: ein fehlender oder falsch typisierter Pfad-, Query-, Header- oder Cookie-Parameter, der falsche Inhaltstyp oder ein Body, der nicht zu seinem JSON Schema passt. Der Body listet jeden Grund auf.
404Keine Route und keine Operation hat den Pfad.
405Der Pfad existiert, aber nicht mit dieser Methode. Der Header Allow listet die Methoden auf, die er annimmt, aus Routen und Spec zusammen.
413Der Body der Anfrage ist größer als 32 MB.
500Ein eingefügter Fehler (siehe Fehler).
501Die Operation dokumentiert keine Antwort für den angeforderten Status.

Browser dürfen den Mock von einer Seite auf einem anderen Port aufrufen: Er beantwortet Preflight-Anfragen und sendet die CORS-Header.

Das Protokoll

Unten auf der Seite stehen die Anfragen, die der ausgewählte Mock beantwortet hat, die neueste zuerst: die Zeit, der Status, die Methode und der Pfad, die verwendete Antwort (der Antwortname einer Route, der Name eines Spec-Beispiels oder generated, wenn der Body aus dem Schema stammt) und wie lange es gedauert hat. Probleme stehen in den Zeilen unter einer Anfrage: wo sie gegen die Spec verstieß oder welchen Beispielwert der Body einer Route nicht erzeugen konnte. Halte den Zeiger auf eine Anfrage, um den Body der Antwort sowie den Body und den Inhaltstyp der Anfrage zu sehen; Antwort kopieren kopiert den Body. Leeren leert das Protokoll.

Wo das Modell von Apple auf dem Gerät verfügbar ist, fasst der Knopf neben Leeren das Protokoll zusammen.

Beispiele in der Spec sichern

Bei den Operationen einer Spec ist die Spec die einzige Quelle für das, was der Mock antwortet. Eine echte Antwort, die du bekommen hast, sicherst du deshalb dort als Beispiel: Klicke im Verlauf mit der rechten Maustaste auf einen Austausch einer Anfrage, die der Spec folgt, und wähle Als Mock-Beispiel sichern …. Gib ihm einen Namen, etwa two tents, und klicke auf Sichern.

Die Antwort wird ein benanntes Beispiel der Antwort ihrer Operation in der Spec, der die Anfrage folgt. Wähle es in der Karte Antworten der Spec aus oder fordere es mit Prefer: example=two tents an.

Für einen Pfad, den die Spec nicht hat, oder für einen Mock ohne Spec legst du eine Route an und fügst den Body ein.

Im Netzwerk teilen

Schalte Anderen Geräten im Netzwerk antworten ein, um den Mock von einem Telefon, einem Tablet oder einem Container zu erreichen. Andere Geräte verwenden die Adresse deines Macs im lokalen Netzwerk mit dem Port des Mocks.

Beim ersten Mal fragt macOS möglicherweise, ob Echolot Geräte in deinem lokalen Netzwerk suchen und sich mit ihnen verbinden darf. Erlaube es, sonst erreichen andere Geräte den Mock nicht. Die Antwort kannst du später unter Systemeinstellungen › Datenschutz & Sicherheit › Lokales Netzwerk ändern.

Danach kann jeder im Netzwerk den Mock aufrufen. Schalte das Teilen aus, wenn du es nicht brauchst.

Über die Befehlszeile

echolot mock alpenglow.yaml stellt eine Spec-Datei bereit, und echolot mock -w <workspace> <mock> stellt einen Mock eines Arbeitsbereichs mit seinen Einstellungen und Routen bereit, mit oder ohne Spec, für CI oder einen Container. Siehe echolot mock. echolot fake erzeugt Beispieldaten aus denselben Vorlagen, für Fixtures und Seed-Daten.

Agenten können Mocks starten und ihre Protokolle über den MCP-Server von Echolot lesen und, wenn das Tool-Set Mocks an ist, Mocks erstellen, Routen hinzufügen und ändern, Beispieldaten erzeugen und Anfragen aus Routen erstellen. Siehe Agenten.

Auf dieser Seite