ExUnit вызывает пустую ошибку с блоком setup_all - PullRequest
0 голосов
/ 26 октября 2018

У меня есть тест, который требует предустановленных данных.

Поэтому я пытаюсь настроить эти данные с помощью обратного вызова setup_all, так как эти данные можно настроить один раз.

Поскольку я не хочу ничего присваивать контексту, я определил setup_all, как показано ниже

setup_all do
  create_languages() 
  create_regions()
  create_currencies() 
  create_user()
  :ok
end

И у каждого теста есть функция, которая получает одну структуру из созданных данных.

Например, один из тестов похож на ниже:

test "update_core/2 (region_id) with valid data, updates core" do
  region = get_region()
  core = create_core()

  {:ok, core} = Cores.update_core(core, %{region_id: region.id})

  assert region.id == core.region_id
end

Однако region = get_region() вызывает пустую ошибку. Почему эта функция может получить структуру? IO.inspect показывает create_regions() фактически создает несколько регионов. Я что-то здесь упускаю?

Заранее спасибо.

1 Ответ

0 голосов
/ 26 октября 2018

Есть большая вероятность, что Ecto либо настроен для использования в режиме песочницы, либо настроен на сброс базы данных после каждого теста в вашей среде :test.Таким образом, вы должны использовать блок setup вместо setup_all:

setup do
  create_languages() 
  create_regions()
  create_currencies() 
  create_user()
  :ok
end

Блок setup вызывается перед каждым тестом, в то время как setup_all вызывается только один раз.

...