# `ExAthena.Providers.Mock`
[🔗](https://github.com/udin-io/ex_athena/blob/v0.7.1/lib/ex_athena/providers/mock.ex#L1)

In-memory provider for tests.

Scripted responses either by canned text or by a user-supplied responder
function. No external dependency — use in unit tests that want to exercise
the agent loop / tool-call parsers without standing up a fake HTTP server.

## Usage

Pass a scripted response per call:

    ExAthena.query("ping", provider: :mock, mock: [text: "pong"])

Or a responder function for dynamic behaviour:

    responder = fn request ->
      %ExAthena.Response{text: "echo: " <> hd(request.messages).content}
    end
    ExAthena.query("hi", provider: :mock, mock: [responder: responder])

For streaming, supply a list of events under `:mock_events`:

    events = [
      %ExAthena.Streaming.Event{type: :text_delta, data: "Hello"},
      %ExAthena.Streaming.Event{type: :text_delta, data: " world"},
      %ExAthena.Streaming.Event{type: :stop, data: :stop}
    ]
    ExAthena.stream("hi", fn _ -> :ok end,
      provider: :mock,
      mock: [text: "Hello world"],
      mock_events: events)

---

*Consult [api-reference.md](api-reference.md) for complete listing*
