早上好,
我的Elixir项目中有一些特别昂贵的数据库设置代码,可将所需数据插入数据库。
我目前正在测试,这样可以通过@tag :insert_my_data
构造在需要此数据之前将其插入。我的测试助手中有执行以下操作的代码:
setup tags do
if tags[:insert_my_data] do
# Run code here
end
end
问题是我必须运行此代码数百次,而且速度很慢。
更好的方法是,在调用
mix test
之前,代码自动运行一次,并且Ecto提供的事务回滚功能将重置为该已知状态(而不是空数据库)。我该怎么做?
谢谢!
最佳答案
我知道这是一个古老的问题,但这是一个好问题,并且仍然会在网络搜索结果中弹出。
在执行任何测试之前运行回调的另一种方法是将其放入test/test_helper.exs
文件。默认情况下,它仅包含
ExUnit.start()
并且它将在测试运行之前执行一次,无论是仅运行
mix test
还是使用mix test test/path/to/file_test.exs:42
之类的目标定位测试的子集。如果您仅针对测试运行,我觉得它比修改别名更干净。
关于elixir - ExUnit-在所有测试之前运行一次数据库设置代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40681911/