Search code examples
testingelixirelixir-iex

Pry while testing


I'm pretty new in Elixir, but have a lot fun with it!

I came from Ruby world, so start looking analogy. And there is exist debugging tool pry. Using binding.pry I can interrupt any session. I found something similar in Elixir – IEx.pry. But it doesn't work when I'm testing something through ExUnit.

Question – is it is possible to interrupt testing session and run iex with current environment?


Solution

  • You need to start your tests inside an iex session - you can do that by running iex -S mix test. Then you can use IEx.pry inside your test:

    require IEx
    
    test "the truth" do
      one = 1
      IEx.pry
      assert one + one == 2
    end
    

    You'll be asked if you want to allow prying into the session:

    Request to pry #PID<0.143.0> at test/test_app_test.exs:7. Allow? [Yn]
    

    And all the context at that point will be available to you:

    pry(1)> one
    1