Глядя на документацию ExUnit, вы можете добавить свойства в структуру context
по следующему шаблону:
defmodule KVTest do
use ExUnit.Case
setup do
{:ok, pid} = KV.start_link
{:ok, pid: pid}
# "[pid: pid]" also appears to work...
end
test "stores key-value pairs", context do
assert KV.put(context[:pid], :hello, :world) == :ok
assert KV.get(context[:pid], :hello) == :world
# "context.pid" also appears to work...
end
end
Но при использовании макроблоков describe
рекомендуется использовать следующую форму для предоставления функций настройки для ваших тестов:
defmodule UserManagementTest do
use ExUnit.Case, async: true
describe "when user is logged in and is an admin" do
setup [:log_user_in, :set_type_to_admin]
test ...
end
describe "when user is logged in and is a manager" do
setup [:log_user_in, :set_type_to_manager]
test ...
end
defp log_user_in(context) do
# ...
end
end
Это работает хорошо, но нет упоминания о том, как добавить новые свойства в структуру контекста для использования в тестах при использовании макроса describe
и именованных настроек.
До сих пор я пробовал (краткое резюме):
...
describe "when user is logged in and is a manager" do
setup [:test]
test(context) do
IO.puts("#{ inspect context }") # Comes up as 'nil'
end
end
defp test(context) do
[test: "HALLO"]
end
...
Можно ли таким образом манипулировать контекстом набора тестов при создании функций настройки для блоков описания?
log_user_in
не работает для вас? Ваша попытка также содержит синтаксическую ошибку. - person Dogbert   schedule 05.09.2018setup [:test]
ты имеешь в виду? Вполне могут быть и другие... Но да, пока пробовал с{ test: "HALLO" }
,[ test: "HALLO" ]
и%{ test: "HALLO"}
. Можно использовать обычный макросsetup
. - person Charlie   schedule 05.09.2018