我想创建自己的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
如何正确创建案例?
答案 0 :(得分:1)
在凤凰城的test
环境中,您的测试.ex
文件中编译的唯一.exs
文件是lib/
和test/support/
中的文件(请参阅elixirc_paths
中mix.exs
的定义。您的.ex
文件位于test/
,不会被编译,这意味着您的测试无法使用那里定义的模块,并且您会收到“无法找到”错误。解决方案是将.ex
文件移至test/support/
。