# double_down v0.47.2 - Table of Contents Builds on the Mox pattern — generates behaviours and dispatch facades from `defcallback` declarations — and adds stateful test doubles powerful enough to test Ecto.Repo operations without a database. ## Pages - Introduction - [DoubleDown](readme.md) - [Getting Started](getting-started.md) - Guides - [Testing](testing.md) - [Dynamic Facades](dynamic.md) - [Logging](logging.md) - [Process Sharing](process-sharing.md) - [Repo](repo.md) - [Repo Test Doubles](repo-doubles.md) - [Repo Testing Patterns](repo-testing.md) - [Incremental Migration](migration.md) - About - [Changelog](changelog.md) ## Modules - [DoubleDown.Contract.Dispatch.Defer](DoubleDown.Contract.Dispatch.Defer.md): A deferred execution marker. - [DoubleDown.Contract.Dispatch.FakeHandler](DoubleDown.Contract.Dispatch.FakeHandler.md): Behaviour for stateful fake handler modules. - [DoubleDown.Contract.Dispatch.Passthrough](DoubleDown.Contract.Dispatch.Passthrough.md): Sentinel value returned from expect responders to delegate to the fallback/fake instead of returning a result directly. - [DoubleDown.Contract.Dispatch.StubHandler](DoubleDown.Contract.Dispatch.StubHandler.md): Behaviour for stateless stub handler modules. - [DoubleDown.Dynamic](DoubleDown.Dynamic.md): Dynamic dispatch facades for existing modules. - [DoubleDown.Facade](DoubleDown.Facade.md): Generates a dispatch facade for a `DoubleDown.Contract`. - Core - [DoubleDown.BehaviourFacade](DoubleDown.BehaviourFacade.md): Generates a dispatch facade for a vanilla Elixir `@behaviour` module. - [DoubleDown.Contract](DoubleDown.Contract.md): Macro for defining contract behaviours with `defcallback` declarations. - [DoubleDown.ContractFacade](DoubleDown.ContractFacade.md): Generates a dispatch facade for a `DoubleDown.Contract`. - [DoubleDown.DynamicFacade](DoubleDown.DynamicFacade.md): Dynamic dispatch facades for existing modules. - Testing - [DoubleDown.Double](DoubleDown.Double.md): Mox-style expect/stub handler declarations with immediate effect. - [DoubleDown.Log](DoubleDown.Log.md): Log-based expectation matcher for DoubleDown dispatch logs. - [DoubleDown.Testing](DoubleDown.Testing.md): Test helpers for DoubleDown contracts. - Repo - [DoubleDown.Repo](DoubleDown.Repo.md): Repo contract for common Ecto Repo operations. - [DoubleDown.Repo.InMemory](DoubleDown.Repo.InMemory.md): Stateful in-memory Repo fake (closed-world). **Recommended default.** - [DoubleDown.Repo.OpenInMemory](DoubleDown.Repo.OpenInMemory.md): Stateful in-memory Repo fake (open-world). - [DoubleDown.Repo.Stub](DoubleDown.Repo.Stub.md): Stateless stub for `DoubleDown.Repo`. - Internals - [DoubleDown.Contract.Dispatch](DoubleDown.Contract.Dispatch.md): Dispatch resolution for DoubleDown contracts. - [DoubleDown.Repo.Impl.MultiStepper](DoubleDown.Repo.Impl.MultiStepper.md): Steps through an `Ecto.Multi` without a real database transaction.