Given this simplified application code:
defmodule Bla do
def hello(name), do: "Hello #{name}"
end
And this test code:
defmodule BlaTest do
use ExUnit.Case
defp user(_), do: {:ok, name: "User"}
defp admin(_), do: {:ok, name: "Admin"}
describe "#hello/1" do
for role <- [:user, :admin] do
setup role
test "greets the #{role}", %{name: name} do
IO.inspect({unquote(role), name})
assert Bla.hello(name) == "Hello #{name}"
end
end
end
end
The tests pass but the IO.inspect output is:
{:user, "Admin"}
{:admin, "Admin"}
I was expecting:
{:user, "User"}
{:admin, "Admin"}
Why is setup role always returning ‘Admin’?






















