I am trying to insert another Oban job after one finishes by listening to [:oban, :job, :stop].
I’d like to assert that the next job was queued after one succeeded, so in my test I do something like this ![]()
test "schedules job after another" do
# ...
{:ok, result} =
perform_job(Workers.MyWorker, %{
record_id: some_record_id
})
assert_enqueued(
[worker: Workers.SecondWorker, args: %{result_id: result.id}],
1000
)
end
And my telemetry event handler looks like this
def handle_event(
[:oban, :job, :stop],
_measure,
meta = %{worker: worker, result: {:ok, result}},
_
) do
Workers.SecondWorker.new(%{result_id: result.id}) |> Oban.insert()
end
However even though I can see the job inserted after inspecting the result of Oban.insert (though it doesn’t have an ID) my test still fails and I couldn’t really figure out why.






















