Phoenix + ExUnit:我应该在哪里定义全局助手?

dri*_*nor 1 elixir phoenix-framework ex-unit

我使用 Phoenix + ExUnit 进行测试。

我有一些ExUnit.Case文件喜欢DataCase, ConnCase...为我的Models, Controllers....

Ale*_*kin 5

如果这只是单个助手的问题,请将其放入您的test/test_helper.exs.

但随着项目的发展,管理变得更加困难。常见的方法是创建test/support文件夹,并按mix.exs以下方式修改您的:

  1. 创建一个像这样的私有函数:
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
Run Code Online (Sandbox Code Playgroud)
  1. 修改您的Mix.Project.project/0回调以包含以下键/值对:
elixirc_paths: elixirc_paths(Mix.env())
Run Code Online (Sandbox Code Playgroud)
  1. 将包含test环境中所需模块的所有文件放在那里,作为*.ex文件。

这样,所有这些都将test在所有其他环境中编译并丢弃。