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