unit testing - Run ExUnit.Case functions serially using Agent -
i know that, default, exunit.case synchronous (according docs http://elixir-lang.org/docs/stable/ex_unit/exunit.case.html). read issue ( https://github.com/elixir-lang/elixir/issues/3580 ) , seems test functions inside case run serially.
when run simple test case without global state cases indeed run serially.
but when use global state agent order of execution depends on luck. same call
mix test --trace the order of execution change. here test suite:
defmodule serialtest use exunit.case test "1" agent.update(:card_id, fn nil -> 1 end) assert true end test "2" res = agent.get(:card_id, fn res -> res end) assert res == 1 end test "3" agent.update(:card_id, fn id -> 3 end) assert true end test "4" res = agent.get(:card_id, fn res -> res end) assert res == 3 end end sometimes passes not. how can have execution order of functions conform declaration order in file defined using agent's global state?
the tests run serially run in random order. tests failing because order dependent change global state.
when run suite see @ bottom:
randomized seed 596046 you can disable adding exunit.configure seed: 0 test_helper.exs rather advise tests order independent.
Comments
Post a Comment