ExUnit est le framework de test intégré d'Elixir, fournissant des macros simples pour définir les tests, assertions et hooks de configuration.
Cas de test (Test Cases)
defmodule MyTest do
use ExUnit.Case
use ExUnit.Case, async: true # for async
test "the truth" do
assert 1 + 1 == 2
end
end
Capture des E/S et des journaux (IO & Logs)
import ExUnit.CaptureIO
test "capture io" do
result = capture_io(fn ->
IO.puts "sup"
end)
assert result == "sup\n"
end
config :ex_unit, capture_logs: true
Assertions et réfutations (Assertions & Refutations)
assert x == y
refute x == y
assert_raise ArithmeticError, fn ->
1 + "test"
end
assert_raise ArithmeticError, "message", fn -> ... end
assert_raise ArithmeticError, ~r/message/, fn -> ... end
flunk "This should have been an error"
Rappels de configuration et correspondances (Setup)
setup do
{:ok, name: "John"}
end
test "it works", %{name: name} do
assert name == "John"
end
defp my_hook(_context) do
{:ok, name: "John", age: 54}
end
describe "a block" do
setup [:my_hook]
test "John's age", context do
assert context[:name] == "John"
assert context[:age] == 54
end
end