我对elixir和phoenix不熟悉,我想对新创建的上下文进行文档测试(使用mix phx.gen.context
)。
我有一个Accounts
模式的User
上下文。
我向accounts_test.exs
添加了以下几行:
alias MyApp.Accounts.User
doctest MyApp.Accounts.User, import: true
甚至修复了默认的change_user
文档:
- %Ecto.Changeset{source: %User{}}
+ %Ecto.Changeset{data: %User{}}
但是我仍然有很多很多错误和警告,好像基本上没有经过文档测试...
例如,默认生成的文档放置:
iex>
update_user(user, %{field: new_value})
{:ok, %User{}}
这将发出:
警告:变量“ new_value”不存在,正在扩展为“ new_value()” ...
警告:变量“ user”不存在,正在扩展为“ user()” ...
test / my_app / accounts_test.exs:45:未定义函数new_value / 0
test / my_app / accounts_test.exs:45:未定义函数user / 0
我的问题是:我缺少什么吗?还是通常不对一个人的上下文进行文档测试(这可以解释为什么它不能立即使用)
答案 0 :(得分:2)
通常来说,我们不对具有副作用的函数进行doctest,例如必须读写数据库的上下文函数,因为它们将需要大量的设置,而这些设置很难在doctest本身中清晰地描绘。 / p>
这当然是可行的,但您应该问自己是否值得付出努力。凤凰城队本身似乎认为并非如此。 :)