doctest 凤凰语境

doctest a phoenix context

我是 elixir 和 phoenix 的新手,我想对新创建的上下文进行文档测试(使用 mix phx.gen.context)。

我有一个带有 User 架构的 Accounts 上下文。

我向 accounts_test.exs 添加了以下行:

alias MyApp.Accounts.User
doctest MyApp.Accounts.User, import: true

甚至修复了默认的 change_user 文档:

-     %Ecto.Changeset{source: %User{}}
+     %Ecto.Changeset{data: %User{}}

但是我还是有很多很多的errors和warnings,好像基本不是用来doctested的...

例如,默认生成的文档放:

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

我的问题是:我是否遗漏了什么?或者通常不经常对一个人的上下文进行文档测试(这可以解释为什么它不能开箱即用)

一般来说,我们不会对具有 side-effects 的函数进行文档测试,例如必须 read/write 到数据库的上下文函数,因为它们需要一些难以清晰描述的设置在 doctest 本身。

这当然是可行的,但你应该问问自己是否值得付出努力。凤凰团队本身似乎认为不是。 :)