Как использовать 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)