2015-09-14 7 views
5

Bitte überprüfen Sie diesen Code:Wie eine unendliche, rekursive Aufgabe in Elixier testen

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

Ich möchte ein Unit-Test für den Funktionskörper, Code schreiben, der Funktionskörper mit opts einige wichtige Berechnung durchführen unter der Annahme und produzieren a new_opts für die nächste Iteration.

Antwort

4

Ich hatte gerade die Berechnung herausziehen in eine separate Funktion, die new_opts zurückgibt, und testen Sie, dass:

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

gut! Vielen Dank. – luishurtado