doctest凤凰语境

时间:2019-06-06 12:30:29

标签: testing elixir phoenix

我对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

我的问题是:我缺少什么吗?还是通常不对一个人的上下文进行文档测试(这可以解释为什么它不能立即使用)

1 个答案:

答案 0 :(得分:2)

通常来说,我们不对具有副作用的函数进行doctest,例如必须读写数据库的上下文函数,因为它们将需要大量的设置,而这些设置很难在doctest本身中清晰地描绘。 / p>

这当然是可行的,但您应该问自己是否值得付出努力。凤凰城队本身似乎认为并非如此。 :)