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?
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
to add to Pawel's answer..
If you run the tests with --trace you can avoid the test timing out.
iex -S mix test --trace
来源:https://stackoverflow.com/questions/29671156/pry-while-testing