ブログから転載。
Elixir v1.3.0-rc.0からExUnitに追加された機能に、describeとnamed setupがあります。
describe
describe/2
マクロを使うことで、複数のテストケースをまとめることができます。
defmodule MyAppTest do
use ExUnit.Case, async: true
describe "addition" do
test "1 + 2 = 3" do
assert 1 + 2 == 3
end
test "6 + 8 = 14" do
assert 6 + 8 == 14
end
end
end
setup/1,2
をdescribe毎に設定することができます。以下の例では、setup_all/1
が返したmapとsetup/1
が返したmapがマージされ、test/3
で利用できます。
defmodule MyAppTest do
use ExUnit.Case, async: true
setup_all do
%{one: 1}
end
describe "addition" do
setup do
%{two: 2}
end
test "1 + 2 = 3", %{one: one, two: two} do
assert one + two == 3
end
end
end
制限
-
describe/2
の内側でdescribe/2
を使うことはできません。 -
describe/2
の内側でsetup_all/1,2
を使うことはできません。
named setup
setup/1
, setup_all/1
の引数に、ブロックではなく、atomやatomのリストを渡すことができます。
defmodule MyAppTest do
use ExUnit.Case, async: true
setup_all :define_one
describe "addition" do
setup [:define_two, :define_three]
test "1 + 2 = 3", %{one: one, two: two, three: three} do
assert one + two == three
end
end
def define_one(_context), do: %{one: 1}
def define_two(_context), do: %{two: 2}
def define_three(_context), do: %{three: 3}
end
複数のdescribe
で同じ内容のsetup
を行いたいときなどに有用です。