Я тестирую GenServer
с помощью модульного тестирования обратных вызовов handle_{call,cast,info}
. Один из моих 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"}]}, %{}}
"""
Я хочу вставить ответ в БД по указанной схеме, которая была реализована при миграции. Однако у меня нет четкого представления о том, как написать модульный тест для этого - поскольку запись в БД, по сути, является побочным эффектом, приведенный выше doctest останется прежним.
Достаточно ли каким-то образом протестировать changeset
независимо друг от друга, а затем поместить Repo.insert
в GenServer
при условии прохождения теста?