【发布时间】:2019-07-01 19:56:00
【问题描述】:
我有一个测试模块一个接一个地同步运行。
我想在 all 测试完成后清除测试对数据库所做的所有更改,即我希望数据在一个测试到另一个测试之间保留在数据库中。
我的应用正在使用 PostgreSQL 数据库 (MyRepo)。
当我在 setup_all 函数中使用 Ecto.Adapters.SQL.Sandbox.checkout(MyRepo) 时,数据库在每次测试后都会被清理。
这是我的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,
正确的做法是什么?
【问题讨论】:
-
在测试之间将数据存储在数据库中绝对是一个糟糕的主意。您有很多选项可以在 DB 中设置数据:设置、回调之前等。这就是单元测试应该完成的方式
-
这与单元测试无关
标签: elixir integration-testing ex-unit