Я строю свой первый тест на феникс. Я просто пытаюсь утверждать, что на экране есть контент. Я использую ex_machina
для завода, это может быть моя проблема, но я не уверен? Вот мой код.Набор тестов Phoenix не может найти столбец при запуске теста
Таблица:
create table(:locations) do
add :start, :string
add :finish, :string
end
Тест:
Контроллер:
def show(conn, %{"id" => locations_id}) do
locations = Repo.get!(Locations, locations_id)
render conn, "show.html", locations: locations
end
Ошибка:
** (Postgrex.Error) ERROR (undefined_column): column "finish" of relation "locations" does not exist
stacktrace:
(ecto) lib/ecto/adapters/sql.ex:463: Ecto.Adapters.SQL.struct/6
(ecto) lib/ecto/repo/schema.ex:397: Ecto.Repo.Schema.apply/4
(ecto) lib/ecto/repo/schema.ex:193: anonymous fn/11 in Ecto.Repo.Schema.do_insert/4
(ecto) lib/ecto/repo/schema.ex:124: Ecto.Repo.Schema.insert!/4
test/controllers/locations_controller_test.exs:8: (test)
Вы можете попробовать обновить базу данных для тестовой среды. Затем перепроверьте, существует ли столбец базы данных таблицы 'locations'' finish'. –
Как восстановить db? – Bitwise
'MIX_ENV = тестовый микс ecto.drop' ИЛИ' psql -U postgres -c "DROP DATABASE awesome_lunch_test;" '. Во втором подходе вы можете иметь другое имя пользователя базы данных и имя базы данных (тестовые конфиги хранятся в 'config/test.exs'). Затем просто запускайте тесты - база данных будет создана до запуска тестов. –