Elixir / Phoenix - 在测试运行的最初阶段运行代码,为所有测试共享数据

时间:2016-10-25 06:47:13

标签: elixir phoenix-framework ex-unit

我想在测试套件的开头运行一个代码块(将数据插入数据库!),并在整个测试套件中保留。

这样的事情可能吗?

我尝试在setup_all块中运行代码,但是: A)我在尝试插入数据库时​​遇到了失败; B)这只能在该测试模块之间共享,而我希望它能在所有测试中共享。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

在开始测试之前运行一次

只需将公共代码放在k=n

test/test_helper.exs

每次测试前运行

假设您已经完成清理数据库并在测试之间运行迁移,您可以在ExUnit.start() # Common Code ModuleOne.some_method ModuleTwo.other_method(args) # etc 中添加类似的内容:

test/test_helper.exs

在所有测试中使用此defmodule TestProject.Helpers do def setup do # Common Code end end 块:

setup

设置测试数据库/架构

如果您还需要为测试设置虚假的数据库,架构和迁移,您还需要定义它们,并将其放在setup do TestProject.Helpers.setup end 中(假设您使用的是驱动程序)是test_helper):

Postgrex

For a more detailed example, you can see my Ecto.Rut package that creates a fake database (for the test env only), and resets it before running each test.