2017-02-10 12 views
9

Thông thường mix.test làm sạch cơ sở dữ liệu thử nghiệm, nhưng nó không hoạt động.Làm cách nào để khôi phục, đặt lại hoặc thả cơ sở dữ liệu kiểm tra Ecto?

Có thể là do tôi đang chơi với một sơ đồ users, nhưng không muốn sử dụng những gì tôi đã tạo nên tôi đã loại bỏ nó. Sau đó tôi bắt đầu lại và tạo một lược đồ mới cho người dùng khác với lần đầu tiên.

Khi tôi cố gắng chạy thử nghiệm trộn lần nữa, đã xảy ra lỗi khi một số trường không tồn tại nên đã có ở đó với giản đồ mới.

Trả lời

18

Bạn có thể truy cập cơ sở dữ liệu thử nghiệm bằng cách sử dụng MIX_ENV=test theo sau bởi lệnh như mix do ecto.drop, mix ecto.reset hoặc mix ecto.rollback.

Trong trường hợp cụ thể này, tôi đã sử dụng MIX_ENV=test mix ecto.reset.

2

Bạn có thể đặt bí danh vào mix.exs như thế này

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 

Và bạn cần phải chạy cơ sở dữ liệu vào chế độ sandbox.

/appdir/test/test_helper.exs của bạn nên được như thế này

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

Và /appdir/config/test.exs như thế này

config :project_name, ProjectName.DB.Repo, 
    pool: Ecto.Adapters.SQL.Sandbox, 
    database: "database_name_test" 
Các vấn đề liên quan