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

lui*_*ado 5 testing elixir erlang-otp

请检查此代码:

defmodule InfinitePollTask do
  def poll(opts \\ [])
    # function body code here
    poll(new_opts)
  end
end
Run Code Online (Sandbox Code Playgroud)

我想为函数体代码编写一个单元测试,假设函数体执行一些重要的计算,optsnew_opts为下一次迭代生成一个.

Paw*_*rok 4

我只需将计算提取到一个返回 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
Run Code Online (Sandbox Code Playgroud)