Как использовать meck в другом тестовом файле ExUnit

Я хотел бы использовать meck в другом тестовом файле ExUnit.

Например,

[x_test.exs]

def setup do
  :meck.new(Hoge, [:passthrough])
 on_exit(fn -> :meck.unload end)
 :ok
end

def teardown do
  :meck.unload
end

test "foo" do
  :meck.expect(Hoge, :foo, fn -> 1 end)
  assert Hoge.foo == 1
end

[y_test.exs]

def setup do
  :meck.new(Hoge, [:passthrough])
 on_exit(fn -> :meck.unload end)
 :ok
end

def teardown do
  :meck.unload
end

test "foo" do
  :meck.expect(Hoge, :foo, fn -> 2 end)
  assert Hoge.foo == 2
end

Иногда x_test.exs - это сбой, но иногда x_test.exs - это успех... (y_test.exs такой же)

Могу ли я использовать макет для той же функции в другом тестовом файле?

1 ответ

meck в настоящее время компилирует и загружает код, указанный вами с вашими ожиданиями. Поскольку внутри луча может быть загружена только одна текущая версия кода, вы должны последовательно выполнить все тесты, которые участвуют в гонке за одной и той же проверенной функцией.

Поскольку в документации ExUnit говорится, что тестовые случаи выполняются параллельно, вам, вероятно, придется объединить все тесты, которые должны выполняться последовательно, в одном тестовом примере (то есть в одном тестовом модуле).

Кроме того, вы можете установить количество тестов, которые могут выполняться параллельно 1. Однако это может замедлить ваш тест

ExUnit поддерживает следующие параметры:

  • :max_cases - максимальное количество дел для параллельной работы; по умолчанию :erlang.system_info(:schedulers_online)
Другие вопросы по тегам