Skip to content
Mocks and explicit contracts in Elixir
Branch: master
Clone or download
ktec Update mox.ex (#86)
`format_process/1` already prepends the word "process".
Latest commit 47785fc Feb 12, 2020
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples/barebones_with_setup Update links Jan 20, 2020
lib Update mox.ex (#86) Feb 12, 2020
test Add moduledoc option to defmock (#74) Oct 1, 2019
.formatter.exs Format example app mix.exs file too Mar 9, 2019
.gitignore Initial commit Sep 25, 2017
.travis.yml Update links Jan 20, 2020 Release v0.5.1 May 24, 2019 Add newline Jan 20, 2020
mix.exs Update links Jan 20, 2020
mix.lock Upgrade ex_doc and earmark to latest versions (#63) Apr 24, 2019


Mox is a library for defining concurrent mocks in Elixir.

The library follows the principles outlined in "Mocks and explicit contracts", summarized below:

  1. No ad-hoc mocks. You can only create mocks based on behaviours

  2. No dynamic generation of modules during tests. Mocks are preferably defined in your test_helper.exs or in a setup_all block and not per test

  3. Concurrency support. Tests using the same mock can still use async: true

  4. Rely on pattern matching and function clauses for asserting on the input instead of complex expectation rules

See the documentation for more information.


Just add mox to your list of dependencies in mix.exs:

def deps do
    {:mox, "~> 0.5", only: :test}

Mox should be automatically started unless the :applications key is set inside def application in your mix.exs. In such cases, you need to remove the :applications key in favor of :extra_applications or call Application.ensure_all_started(:mox) in your test/test_helper.exs.

Enforcing consistency with behaviour typespecs

Hammox is an enhanced version of Mox which automatically makes sure that calls to mocks match the typespecs defined in the behaviour. If you find this useful, see the project homepage.


Copyright 2017 Plataformatec
Copyright 2020 Dashbit

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

You can’t perform that action at this time.