Packages
espec
0.3.0
1.10.0
1.9.2
1.9.1
1.9.0
1.8.3
1.8.2
1.8.1
1.8.0
1.7.0
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.2
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.8.28
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.2
0.4.1
0.4.0
0.3.7
0.3.5
0.3.0
0.2.0
0.1.0
BDD testing framework for Elixir inspired by RSpec.
Current section
Files
Jump to
Current section
Files
lib/espec/mock.ex
defmodule ESpec.Mock do
@agent_name :espec_mock_agent
def expect(module, name, function) do
try do
:meck.new(module, [:non_strict])
rescue
error in [ErlangError] ->
case error do
%ErlangError{original: {:already_started, _pid}} -> :ok
_ -> raise error
end
end
:meck.expect(module, name, function)
agent_put(module)
end
@doc "Unload modules at the end of examples"
def unload do
:meck.unload(agent_get)
agent_del_all
end
@doc "Start Agent to save mocked modules."
def start_agent do
Agent.start_link(fn -> HashSet.new end, name: @agent_name)
end
@doc false
def agent_get do
set = Agent.get(@agent_name, &(&1))
Set.to_list(set)
end
@doc false
def agent_del_all do
Agent.update(@agent_name, fn(_state) -> HashSet.new end)
end
@doc false
def agent_put(key) do
Agent.update(@agent_name, &(Set.put(&1, key)))
end
end