我正在unit testing the handle_{call,cast,info}
callbacks测试GenServer
。我的 doctest 之一如下:
@doc """
Call the GenServer to retrieve the initial workout
## Examples
iex> :rand.seed(:exsplus, {101, 102, 103})
iex> Pullapi.GenServerWorker.handle_call({:initial_workout, 5}, nil, %{})
{:reply,
{:ok,
[%{"Action" => "Pullups", "SequenceNo" => 0, "Units" => "1"},
%{"Action" => "Rest", "SequenceNo" => 1, "Units" => "60"},
%{"Action" => "Pullups", "SequenceNo" => 2, "Units" => "3"},
%{"Action" => "Rest", "SequenceNo" => 3, "Units" => "60"},
%{"Action" => "Pullups", "SequenceNo" => 4, "Units" => "3"},
%{"Action" => "Rest", "SequenceNo" => 5, "Units" => "70"}]}, %{}}
"""
我想在迁移中实现的指定模式下将回复插入到数据库中。但是我对于如何为此编写单元测试没有可靠的想法 - 因为DB写入本质上是副作用,上面的 doctest 将保持不变。
以某种方式 doctest changeset
是否足够独立,然后将Repo.insert
放入GenServer
给出测试通行证?
答案 0 :(得分:1)
正如您所提到的,您在DocTests中尝试覆盖的功能具有副作用,而且由于文档的原因不鼓励这样做。
您可以在"When not to use doctest" section中找到更多信息:
通常,当您的代码示例包含副作用时,不建议使用doctests