| title | ExUnit |
|---|---|
| category | Elixir |
| updated | 2018-11-19 |
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 IO
import ExUnit.CaptureIO test "capture io" do result = capture_io(fn -> IO.puts "sup" end) assert result == "sup\n" end
Capture logs
config :ex_unit, capture_logs: true
Async
defmodule AssertionTest do # run concurrently with other test cases use ExUnit.Case, async: true end
Assertions
assert x == y refute x == y assert_raise ArithmeticError, fn -> 1 + "test" end assert_raise ArithmeticError, "message", fn -> ... assert_raise ArithmeticError, ~r/message/, fn -> ... flunk "This should've been an error"
See: Assertions
Setup
Pattern matching
setup do {:ok, name: "John"} end
test "it works", %{name: name} do assert name == "John" end
Setup
defp my_hook(_context) do # Invoked in every block in "a block" {: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
Also see
{: .-one-column}