【发布时间】:2017-10-09 18:00:45
【问题描述】:
我正在通过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 中是否足够?
【问题讨论】:
标签: tdd elixir ecto changeset gen-server