Packages
espec
0.7.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/before.ex
defmodule ESpec.Before do
@moduledoc """
Defines 'before' macro.
If before block returns {:ok, key: value},
the {key, value} is added to an 'exapmle dict'.
The dict can be accessed in another `before`, in `let`,
and in example by `__` (`__[:key]`).
"""
@doc "Struct has 'spec' module name and random fuction name."
defstruct module: nil, function: nil
@doc """
Adds %ESpec.Before sutructs to the @context and
defines a function with random name which will be called when example is run.
"""
defmacro before(do: block) do
function = random_before_name
quote do
tail = @context
head = %ESpec.Before{module: __MODULE__, function: unquote(function)}
def unquote(function)(var!(__)), do: unquote(block)
@context [head | tail]
end
end
defp random_before_name, do: String.to_atom("before_#{ESpec.Support.random_string}")
end