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

时间:2015-09-14 22:14:22

标签: testing elixir otp

请检查此代码:

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

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

1 个答案:

答案 0 :(得分: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