如何在 Elixir 中测试无限递归任务

How to test an infinite, recursive Task in Elixir

请检查此代码:

defmodule InfinitePollTask do
  def poll(opts \ [])
    # function body code here
    poll(new_opts)
  end
end

我想为函数体代码编写单元测试,假设函数体使用 opts 执行一些重要计算并为下一次迭代生成 new_opts

我只是将计算拉出到一个单独的函数中 returns new_opts,然后测试它:

defmodule InfinitePollTask do
  def poll(opts \ [])
    poll(do_poll(opts))
  end

  def do_poll(opts)
    # important computation
  end
end

defmodule InfinitePollTaskTest do
  use ExUnit.Case

  test "some case" do
    assert InfinitePollTask.do_poll(some_opts) == some_result_opts
  end
end