3
첫 번째 피닉스 테스트를 빌드하고 있습니다. 나는 단지 화면에 내용이 있다고 주장하려고하고있다. 공장에 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)
당신은 테스트 환경에 대한 데이터베이스를 다시 시도 할 수 있습니다 :
===
팁 : 마이그레이션이
aliases
민간 기능에mix.exs
파일을보고 실행되는 이유를 이해할 수있다. 그런 다음 데이터베이스 테이블'locations' 열'finish'가 있는지 다시 확인하십시오. –데이터베이스를 어떻게 다시 만듭니 까? – Bitwise
'MIX_ENV = 테스트 믹스 ecto.drop' 또는'psql -U postgres -c "DROP DATABASE awesome_lunch_test;"'. 두 번째 접근법에서는 다른 데이터베이스 사용자 이름과 데이터베이스 이름을 가질 수 있습니다 (테스트 구성은'config/test.exs'에 저장됩니다). 그런 다음 테스트를 실행하십시오. 데이터베이스는 테스트가 실행되기 전에 생성됩니다. –