2015-09-14 17 views
5

Proszę sprawdzić ten kod:Jak testować nieskończoną, rekurencyjną zadanie w Elixir

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

Chcę napisać badanej jednostki dla kodu ciała funkcji, przyjmując ciało funkcja wykonać kilka ważnych obliczeń przy użyciu opts i produkować a new_opts dla następnej iteracji.

Odpowiedz

4

bym po prostu wyciągnąć z obliczeń w osobnej funkcji zwracającej new_opts i przetestować, że:

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 
+0

Dobry! Dziękuję Ci. – luishurtado