diff --git a/lib/mimic.ex b/lib/mimic.ex index 669dc7c..d81514e 100644 --- a/lib/mimic.ex +++ b/lib/mimic.ex @@ -459,7 +459,14 @@ defmodule Mimic do ``` """ @spec set_mimic_global(map()) :: :ok - def set_mimic_global(_context \\ %{}), do: Server.set_global_mode(self()) + def set_mimic_global(_context \\ %{}) + + def set_mimic_global(%{async: true}) do + raise "Mimic cannot be set to global mode when the ExUnit case is async. " <> + "If you want to use Mimic in global mode, remove \"async: true\" when using ExUnit.Case" + end + + def set_mimic_global(_context), do: Server.set_global_mode(self()) @doc """ Chooses the mode based on ExUnit context. If `async` is `true` then diff --git a/test/mimic_test.exs b/test/mimic_test.exs index 82451f0..6e7edca 100644 --- a/test/mimic_test.exs +++ b/test/mimic_test.exs @@ -1280,4 +1280,11 @@ defmodule Mimic.Test do end end end + + describe "set_mimic_global/1" do + test "raises if the test case is async" do + message = ~r/Mimic cannot be set to global mode when the ExUnit case is async/ + assert_raise RuntimeError, message, fn -> set_mimic_global(%{async: true}) end + end + end end