完成“所有**”测试后如何清理测试数据库?

时间:2019-07-01 10:26:36

标签: elixir integration-testing ex-unit

我有一个测试模块,它们一个接一个地运行。
我想在所有测试完成后清除由测试对数据库所做的所有更改,即,我希望数据在一个测试与另一个测试之间保持在db中。
我的应用正在使用PostgreSQL数据库(MyRepo)。
当我在Ecto.Adapters.SQL.Sandbox.checkout(MyRepo)函数中使用setup_all时,每次测试后都会清理数据库。
这是我的condig/test.exs文件:

config :my_repo, MyRepo,
       pool: Ecto.Adapters.SQL.Sandbox,
       database: "my-repo-test",
       username: "postgres",
       password: "postgres",
       hostname: "localhost",
       port:     "5432",
       pool_size: 1,
       max_overflow: 0,

正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用ExUnit.Callbacks.on_exit/2

setup_all do
  on_exit fn -> Repo.cleanup() end
end