testing - reiniciar - ¿Cómo deshacer, restablecer o eliminar la base de datos de prueba Ecto?
formatear lg k540 (2)
Puede acceder a la base de datos de prueba utilizando MIX_ENV=test
seguido de un comando como mix do ecto.drop
, mix ecto.reset
o mix ecto.rollback
.
En este caso particular, usé MIX_ENV=test mix ecto.reset
.
Si su aplicación tiene varios repositorios (DBs), querrá especificar un repositorio específico para evitar aplicar la operación a todos los repositorios. Por ejemplo
mix ecto.drop --repo Order.Repo
Para obtener más información sobre una tarea Ecto, use la mix help <task>
Por mix.test
general, mix.test
limpia la base de datos de prueba, pero no funciona.
Puede ser porque estaba jugando haciendo un esquema de users
, pero no quería usar lo que hice, así que me deshice de él. Luego comencé de nuevo e hice un nuevo esquema para los usuarios que era diferente al primero.
Cuando intenté volver a ejecutar la prueba de mezcla, se produjo un error que indicaba que no existían algunos campos que deberían haber estado allí con el nuevo esquema.
Puedes establecer alias en mix.exs como este
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
Y necesitas ejecutar la base de datos en modo sandbox.
Tu /appdir/test/test_helper.exs debería ser así
Ecto.Adapters.SQL.Sandbox.mode(ProjectName.DB.Repo, {:shared, self()})
ExUnit.start(exclude: [:pending])
Y /appdir/config/test.exs como este
config :project_name, ProjectName.DB.Repo,
pool: Ecto.Adapters.SQL.Sandbox,
database: "database_name_test"