ExUnit自己的案例

时间:2017-11-28 20:06:01

标签: elixir phoenix-framework

我想创建自己的AccountCase,在其中我将创建用户和会话,并在我的测试中使用它。我看着ConnCase,试着这样做:

defmodule MyAppWeb.AccountHelpers do
  using(opts) do
    user_attrs = Keyword.get(opts, :attrs, %{login: "test@gmail.com", password: "123456", locale: "en"})
    quote do
      def fixture(:user) do
        {:ok, %{session: session, user: user}} = MyApp.Sessions.register_user(user_attrs)
        ....
        {:ok, %{user: user, session: session}}
      end
    end
  end
end

在测试文件中,我这样做:

defmodule MyAppWeb.V1.CategoryControllerTest do
    use MyAppWeb.ConnCase
    use MyAppWeb.AccountHelpers
...
end

但是当我运行测试时,我收到错误

** (CompileError) test/myapp_web/controllers/v1/category_controller_test.exs:3: module MyAppWeb.AccountHelpers is not loaded and could not be found
    (elixir) expanding macro: Kernel.use/1

如何正确创建案例?

1 个答案:

答案 0 :(得分:1)

在凤凰城的test环境中,您的测试.ex文件中编译的唯一.exs文件是lib/test/support/中的文件(请参阅elixirc_pathsmix.exs的定义。您的.ex文件位于test/,不会被编译,这意味着您的测试无法使用那里定义的模块,并且您会收到“无法找到”错误。解决方案是将.ex文件移至test/support/