Beispiel
req 0.7.2: Stub HTTP responses for Elixir code that uses Req, with no network, no fake server process and no mocking library
Verifiziertes Beispiel für hex req 0.7.2: Stub HTTP responses for Elixir code that uses Req, with no network, no fake server process and no mocking library.…
sha256:1a5be8dc134928a8238887f9504e70f60f67fb5fa956fd3fc577d86784ecfa1d
Dieses Netzwerk bietet eine Sache: ein Sample, das baut. Es hat es in einer Sandbox ausgeführt und die signierte Quittung behalten. Es bewertet nichts und garantiert nichts — ob derselbe Code bei Ihnen baut, hat es nicht gemessen.
Wie viele verschiedene Signaturschlüssel eine bestandene Vertragsquittung eingereicht haben. Einer ist der Autor allein; mehr als einer heißt, jemand anderes hat es auch gebaut. Ein Schlüssel wird selbst erzeugt und hat keine registrierte Identität dahinter — gezählt werden Schlüssel, nicht Personen.
MIT-0
Ausführungsbelege
Die deklarierte Umgebung und die signierten Läufe stehen getrennt, damit Sie genau sehen, was dieses Sample ausgeführt hat und wo.
- Beleggrundlage
- Signierter Vertrag bestanden
- Verifizierungsbelege
- 1
- Signaturschlüssel, die es gebaut haben
- 1
Deklarierte Umgebung
elixir 1 linux x64 elixir 1 elixir mix
Umgebungen der Verifizierungsläufe
| Umgebung | Contract | Stufen | Lauf |
|---|---|---|---|
| elixir 1 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 | PASS | compile:PASS · contract:PASS · load:PASS · resolve:PASS CONTAINER_RUN · hex@1 |
2026-08-14 |
Fall
HOW- Ziel
- Stub HTTP responses for Elixir code that uses Req, with no network, no fake server process and no mocking library
- Pakete
- Symbole
-
- Req.Test.stub
- Req.Test.expect
- Req.Test.verify!
- Req.Test.json
- Req.Test.transport_error
- Req.Plug
- Req.Steps.decode_body
- Req.Steps.retry
- Req.Steps.handle_http_errors
- Req.request!
- Req.TransportError
- Plug.Conn.send_resp
- Umgebung
- elixir 1
- Erstellt
- 2026-08-14T20:15:02Z
Contract
- assert the response content-type is what decodes the body, so a stub built with Req.Test.json hands the caller a map and no .json() accessor is called anywhere, and that headers are a map of lists where a missing header reads as nil
- assert the same JSON bytes sent with Plug.Conn.send_resp and no content-type stay a binary, so a clean HTTP 200 stops matching the caller's %{"celsius" => _} clause
- assert that with no content-type the request URL path decides instead: /data.json is decoded while /data and /data.txt are not, because decode_body falls back to application/octet-stream and resolves that through MIME.from_path
- assert an HTTP 500 is {:ok, response} and raises from neither Req.request/1 nor Req.request!/1, that the error body is decoded like any other body, and that http_errors: :raise reports the body still undecoded because handle_http_errors runs ahead of decode_body
- assert retry is on by default: one 500 on GET calls the stub four times (the initial request plus max_retries 3), the same 500 on POST calls it once because :safe_transient covers GET and HEAD only, and retry: :transient opts POST in
- assert Req.Test.transport_error produces {:error, %Req.TransportError{}} rather than a response, which a queue of canned responses cannot express, and that Req.get! raises it
- assert expectations are consumed in order ahead of a stub whatever the registration order, and that once drained Req.Test falls through to the stub instead of failing
- assert an exhausted expectation with no stub raises "no mock or stub for X" while a name never registered raises the different "cannot find mock/stub X in process #PID<...>"
- assert an unmet expectation fails nothing until Req.Test.verify! is called, and that verify! then names how many more uses were expected
- assert JSON decoding is switched off by decode_body: false, decoders: false or raw: true, that :decoders replaces the default [:json, :json_api] rather than extending it, and that a codec under :decoders is the 0.7.0 replacement for the deprecated :decode_json
- assert Req.Test implements the Plug behaviour and the stub name is literally that plug's options, so a bare function plug stubs HTTP with no registry at all
Dateien
- csx.json
- lib/csx_req/weather.ex
- mix.exs
- mix.lock
- test/contract_test.exs
- test/test_helper.exs