Как скрыть логи в одних тестах, а не в других?

Обратите внимание, что удвоение обратных косых черт связано с тем, что вы вводите строку в командной строке, а строка сначала анализируется парсером R. Вы можете вводить строки по-разному, некоторые из которых не нуждаются в удвоении. Например:

> tmp <- scan(what='')
1: \\\\\str
2: 
Read 1 item
> print(tmp)
[1] "\\\\\\\\\\str"
> cat(tmp, '\n')
\\\\\str 
> 
0
задан Flame_Phoenix 15 January 2019 в 14:59
поделиться

2 ответа

Объявите 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

Я не проверял это, но оно должно работать.

0
ответ дан Aleksei Matiushkin 15 January 2019 в 14:59
поделиться

Почему бы не использовать 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

Примечание: Вы столкнетесь с проблемами при этом, если будете выполнять тесты асинхронно

0
ответ дан Sheharyar 15 January 2019 в 14:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: