Обратите внимание, что удвоение обратных косых черт связано с тем, что вы вводите строку в командной строке, а строка сначала анализируется парсером R. Вы можете вводить строки по-разному, некоторые из которых не нуждаются в удвоении. Например:
> tmp <- scan(what='')
1: \\\\\str
2:
Read 1 item
> print(tmp)
[1] "\\\\\\\\\\str"
> cat(tmp, '\n')
\\\\\str
>
Объявите ExUnit.setup/1
с обязательным ExUnit.on_exit/2
для установки переменной среды с помощью Application.put_env/4
.
setup do
Application.put_env(:my_app, :disable_logging, false)
on_exit fn ->
Application.put_env(:my_app, :disable_logging, true)
end
:ok
end
Я не проверял это, но оно должно работать.
Почему бы не использовать ExUnit.CaptureLog
для подавления журналов и просто отбросить результат?
Если у вас есть большое количество тестов, которые регистрируют в консоли и не делают Если вы не хотите делать это для всех из них, вы можете создать собственный ExUnit tag
в сочетании с ответом @ Aleksei, который сделает это за вас.
В шаблон ExUnit.Case
добавьте следующее:
setup tags do
if tags[:disable_logger] do
Application.put_env(:my_app, :disable_logging, false)
on_exit(fn ->
Application.put_env(:my_app, :disable_logging, true)
end)
end
:ok
end
Теперь вы можете просто указать тег для тестов, для которых вы хотите отключить ведение журнала:
@tag disable_logger: true
test "something happens" do
# ...
end
Примечание: Вы столкнетесь с проблемами при этом, если будете выполнять тесты асинхронно