mockery v2.2.0 Mockery.Macro View Source
Contains alternative macro-based way to prepare module for mocking.
Link to this section Summary
Functions
Function used to prepare module for mocking
Link to this section Functions
Function used to prepare module for mocking.
For Mix.env other than :test it returns the first argument unchanged. If Mix.env equal :test it creates a proxy to the original module. When Mix is missing it assumes that env is :prod.
Examples
Prepare for mocking
defmodule Foo do
import Mockery.Macro
def foo do
mockable(Bar).bar()
end
end
Prepare for mocking with global mock
# test/support/global_mocks/bar.ex
defmodule BarGlobalMock do
def bar, do: :mocked
end
# lib/foo.ex
defmodule Foo do
import Mockery.Macro
def foo do
mockable(Bar, by: BarGlobalMock).bar()
end
end
Mockery.of/2 comparison
- It’s based on macro and process dictionary instead of on tuple calls. (Tuple calls are disabled by default in OTP21+ and require additional compile flag to be reenabled)
- It doesn’t support passing module names as a string as it don’t create unwanted compile-time dependencies between modules
Potential issues
Output of mockable/2
macro should not be bind to variable or module attribute.
If it happens, you’ll see a compilation warning at best, and in the worst case Mockery won’t
work correctly.