2017-02-10 60 views
9

Genellikle mix.test test veritabanını temizler, ancak çalışmıyor.Ecto test veritabanı nasıl geri alınır, sıfırlanır veya düşer?

Bunun nedeni, users şemasını oluşturmakla uğraştığım için olabilir, ancak yaptığım şeyi kullanmak istemediğim için bundan kurtuldum. Daha sonra başladım ve ilkinden farklı olan kullanıcılar için yeni bir şema yaptım.

Mix testini yeniden çalıştırmayı denediğimde, yeni şemada bulunması gereken bazı alanların olmadığı bir hata oluştu.

cevap

18

Bir komutu gibi mix do ecto.drop, mix ecto.reset veya mix ecto.rollback ardından MIX_ENV=test kullanarak sınama veritabanına erişebilir.

Bu özel durumda, MIX_ENV=test mix ecto.reset kullandım.

2

Bu

defp aliases do 
    [ 
    "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], 
    "ecto.reset": ["ecto.drop", "ecto.setup"], 
    "test":  ["ecto.create --quiet", "ecto.migrate", "test"] 
    ] 
end 

gibi mix.exs içine adlar ayarlayabilirsiniz Ve sandbox moduna veritabanını çalıştırmanız gerekir.

Kişisel /appdir/test/test_helper.exs bu

config :project_name, ProjectName.DB.Repo, 
    pool: Ecto.Adapters.SQL.Sandbox, 
    database: "database_name_test" 
gibi bu

Ecto.Adapters.SQL.Sandbox.mode(ProjectName.DB.Repo, {:shared, self()}) 
ExUnit.start(exclude: [:pending]) 

Ve /appdir/config/test.exs gibi olmalıdır