Eine API-Antwort mocken
Beantworte einen der API-Aufrufe deiner App mit einer vorgefertigten Antwort — auf dem Smartphone in deiner Hand, ohne Fake-Server und ohne Rebuild. Eine Mock-Blockregel für einen festen Body, ein Ausführungslimit, wenn sie genau einmal feuern muss, und ein Skript, wenn der Body berechnet werden muss.
Mocking auf einem echten Gerät ist der Punkt, an dem die meisten Setups zerfallen: Der Stub-Server liegt auf einem Laptop, das Smartphone muss ihn erreichen, und die App muss auf ihn zeigen. Busymate DevTools legt den Mock stattdessen in den Aufzeichnungspfad. Eine Blockregel beobachtet jeden Request, der auf eine Methode und ein Host-plus-Pfad-Muster passt, und beantwortet den Treffer selbst — mit einem synthetischen Fehler, einer gekappten Verbindung oder einem gemockten Erfolg, der genau wie eine Antwort vom Origin aussieht. Der Upstream-Server wird nie kontaktiert.
Regeln greifen an zwei Stellen, sodass jeder Verbindungsmodus abgedeckt ist: der Proxy-Server für Browser, Android über den Proxy und iOS im PAC-Modus, und der VPN-Tunnel auf dem Gerät für iOS im VPN-Modus. Globale Regeln gelten für jedes Gerät; Regeln pro Gerät kommen obendrauf. Änderungen verteilen sich über Realtime, sodass eine gespeicherte Regel ohne Reconnect auf dem Smartphone live ist.
Was du
Ein Smartphone, das bereits aufzeichnet, und der Endpunkt, den du faken willst.
Ein gekoppeltes Smartphone mit eingeschalteter Aufzeichnung — folge zuerst der iPhone- oder Android-Anleitung.
Der API-Host auf der SSL-Proxy-Liste dieses Geräts. Eine Regel, die auf einen Pfad matcht, sieht den Pfad nur bei einem entschlüsselten Host.
Methode, Host und Pfad des Aufrufs, den du beantworten willst, und der Body, den deine App zurückerwartet.
Nur für die Skript-Variante: die Admin-Stufe Skripte-Fähigkeit auf deiner Rolle. Einfache Mock-Regeln brauchen keine besondere Rolle.
Der Reihe
Die Schritte eins bis vier liefern einen festen Mock. Fünf und sechs decken die zwei Fälle ab, die ein fester Body nicht kann: einmal feuern und die Antwort berechnen.
- 01
Sicherstellen, dass der Host entschlüsselt ist
Öffne den Dashboard-Feed und suche einen echten Request an den Endpunkt. Zeigt seine Zeile einen entschlüsselten Body, bist du bereit. Erscheint der Host noch verschlüsselt, füge ihn der SSL-Proxy-Liste des Geräts hinzu — über die Host-Aktionen der Zeile oder in den Geräteeinstellungen — und löse den Aufruf erneut aus. Bei einem Host, der verschlüsselt durchläuft, kann der Enforcer nur den Hostnamen matchen; der Pfad ist unsichtbar, also feuert ein pfadgenauer Mock nie.
- 02
Blocks öffnen und eine Regel hinzufügen
Öffne die Seite Blocks aus der Einstellungsnavigation für eine globale Regel, oder gehe zum Gerät und dann zu Blocks für eine Regel, die nur für dieses Smartphone gilt. Füge eine Regel hinzu und trage die Methode ein — oder lass sie leer, um jede zu treffen — sowie das Muster. Muster sind dieselben Host-plus-Pfad-Platzhalter wie bei Breakpoints: Host, Schrägstrich, Pfad, mit einem Sternchen überall dort, wo ein Segment variiert.
- 03
Mock wählen und die Antwort formen
Setze die Aktion auf Mock. Während Block einen Aufruf scheitern lässt und Drop so tut, als wäre das Netz verschwunden, soll Mock ihn erfüllen: Lege den Status fest — Standard ist 200 —, alle Header, auf die die App achtet, und den Body. Gib ihm den Content-Type, den deine App parst; ein JSON-Client, der eine Textantwort bekommt, scheitert, bevor er ein Byte gelesen hat. Als JSON gespeichert sieht die Regel so aus.
Eine Mock-Regel, die einen Feature-Flags-Aufruf mit festem Body beantwortet json{ "enabled": true, "method": "GET", "pattern": "api.example.com/v1/feature-flags", "action": { "type": "mock", "status": 200, "headers": { "Content-Type": "application/json" }, "body": "{\"flags\": {\"newCheckout\": true}}" } } - 04
Speichern, den Aufruf auslösen und den Feed prüfen
Speichere die Regel und benutze die App. Der nächste passende Request wird beantwortet, ohne den Aufzeichnungspfad je zu verlassen, und erscheint trotzdem in deinem Feed — als gemockt markiert, damit du genau siehst, was gefälscht wurde, und bestätigen kannst, dass die Regel tut, was du erwartest. Die App sieht nur eine gewöhnliche Serverantwort: Synthetische Antworten tragen keinen internen oder identifizierenden Header, also verrät nichts in der Antwort das Abfangen.
Schalte die Regel über ihren Aktiv-Schalter aus, wenn du fertig bist. Eine deaktivierte Regel kostet nichts und behält ihre Form fürs nächste Mal.
- 05
Genau einmal feuern lassen — mit einem Ausführungslimit
Manche Mocks dürfen nur einmal passieren. Der Klassiker ist ein synthetischer 401, der die App glauben lässt, ihr Token sei abgelaufen, damit sie ihren Refresh-Flow anstößt — beantworte jeden Request so, und die App refresht, versucht es erneut, bekommt wieder einen 401 und dreht sich ewig im Kreis. Das Feld Max runs begrenzt, wie oft eine Regel feuern darf; am Limit deaktiviert sie sich selbst und der Editor zeigt ein Auto-deaktiviert-Badge, unterscheidbar von einer Regel, die du selbst ausgeschaltet hast.
Der Zähler wird pro Gerät geführt und überlebt Reconnects und App-Neustarts, sodass ein Limit von eins auf diesem Smartphone genau einmal überhaupt feuert, nicht einmal pro Sitzung. Eine globale Regel mit Limit wird nur auf dem Gerät unterdrückt, das es aufgebraucht hat, und feuert auf jedem anderen Smartphone der Flotte weiter. Du kannst auch BusyBro in natürlicher Sprache um einen einmaligen Mock-401 auf einem Host bitten, und es schreibt dieselbe Regel.
Der einmalige 401 — identisch mit einem normalen Mock plus Limit eins json{ "enabled": true, "method": "GET", "pattern": "api.example.com/v1/me", "action": { "type": "mock", "status": 401, "headers": { "Content-Type": "application/json" }, "body": "{\"error\": \"token_expired\"}" }, "maxRuns": 1 } - 06
Den Body mit einem Skript berechnen
Ein Mock-Body ist eine eingefrorene Zeichenkette. Wenn die Antwort vom Request abhängen muss — eine zurückgespiegelte ID, ein Zeitstempel, ein in die echte Antwort gepatchtes Feld —, stelle die Aktion der Regel auf Skript um oder lege ein eigenständiges Skript unter Settings, dann Scripts an. Du bekommst einen Code-Editor mit Autovervollständigung für Request-, Response- und Hilfsobjekte sowie ein Test-Panel, das dein Skript gegen einen echten aufgezeichneten Eintrag laufen lässt und einen Vorher-Nachher-Diff zeigt, ohne den Live-Traffic zu berühren. Der Trockenlauf nutzt exakt die Sandbox des Live-Proxys, also bedeutet ein bestandener Test, dass es live funktioniert.
Ein Skript, das eine Ausnahme wirft oder in ein Timeout läuft, fällt offen: Die Originalbytes werden weitergeleitet und der Eintrag wird im Inspektor markiert, sodass ein kaputtes Skript nie eine Verbindung blockieren oder sich der App verraten kann. Skripte sind Admin-Stufe, weil sie beliebigen Code im Aufzeichnungspfad ausführen.
Ein Request-Hook, der mit einem berechneten JSON-Body kurzschließt javascriptfunction onRequest(req) { if (req.path.startsWith("/v1/feature-flags")) { // computed per request — the upstream is never contacted return Response.json({ flags: { newCheckout: true, seed: Date.now() } }, { status: 200 }); } // no return → forward unchanged }
Was schief
Eine Regel, die tot wirkt, matcht fast immer auf etwas, das sie nicht sehen kann.
Die Regel feuert nie
Prüfe, dass der Host für dieses Gerät entschlüsselt ist — ein Pfadmuster braucht das —, dann die Schreibweise des Musters und dass die Methode passt oder leer ist. Die Feed-Zeile des echten Requests zeigt den exakten Host und Pfad zum Kopieren.
Die App hängt in einer Refresh-Schleife
Dein synthetischer 401 feuert bei jedem Request. Setze Max runs auf eins, damit sich die Regel nach dem ersten Treffer deaktiviert und der wiederholte Request den echten Server erreicht.
Die App lehnt die gemockte Antwort ab
Meist fehlt der Content-Type-Header oder die Form des Bodys passt nicht zu dem, was der Client parst. Kopiere Header und Body einer echten aufgezeichneten Antwort aus dem Inspektor als Ausgangspunkt.
Die Regel zeigt ein Auto-deaktiviert-Badge
Sie hat ihr Ausführungslimit auf diesem Gerät aufgebraucht. Lösche Max runs oder aktiviere die Regel erneut, um sie wieder scharfzuschalten.
Das Skript lief, aber die Antwort war die echte
Das Skript hat eine Ausnahme geworfen oder ein Timeout erreicht und ist offen gefallen. Öffne den Eintrag im Inspektor — das Fehler-Badge trägt Meldung und Zeile —, behebe es im Editor und lass das Test-Panel gegen denselben Eintrag laufen, bevor du es wieder aktivierst.
Häufige
Kann die App erkennen, dass sie gemockt wurde?
Nicht durch Prüfen der Antwort. Ein gemockter 200 oder ein blockierter 403 trägt keinen identifizierenden Header und sieht aus wie eine gewöhnliche Antwort vom Origin. Die Sichtbarkeit ist einseitig: Der markierte Eintrag erscheint nur in deinem Feed.
Funktioniert das auf iOS im VPN-Modus oder nur über den Proxy?
Beides. Dieselbe Regel-Engine läuft im iOS-VPN-Tunnel und auf dem Proxy-Server, also halten sich iOS in beiden Modi, Android über den Proxy und Browser alle an die Regel.
Muss ich etwas neu deployen, wenn ich eine Regel ändere?
Nein. Regeln leben in denselben Einstellungen, die über Realtime zu den Geräten fließen, also gilt ein Speichern sofort für neue Verbindungen. Eine bereits offene Keep-Alive-Verbindung behält die Konfiguration, mit der sie gestartet ist, bis sie sich neu verbindet.
Die Antwort faken,
Eine Regel im Dashboard, und die App in deiner Hand bekommt die Antwort, die du testen willst — ohne Stub-Server, ohne Rebuild.