Το ExUnit είναι το ενσωματωμένο πλαίσιο δοκιμών για την Elixir, παρέχοντας απλές μακροεντολές για περιπτώσεις ελέγχου και ισχυρισμούς.
Ορισμός Περιπτώσεων Ελέγχου (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
Καταγραφή IO και Καταγραφών (Capture 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 & 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"
Callbacks Προετοιμασίας και Συμφραζόμενα
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