测试时撬

Pry while testing

我是 Elixir 的新手,但玩得很开心!

我来自Ruby世界,所以开始看类比。并且存在调试工具pry。使用 binding.pry 我可以中断任何会话。我在 Elixir 中发现了类似的东西 – IEx.pry。但是当我通过 ExUnit 测试某些东西时它不起作用。

问题 – 是否可以中断测试会话和 运行 当前环境下的 iex?

您需要在 iex 会话中开始测试 - 您可以通过 运行 iex -S mix test 来完成。然后你可以在测试中使用 IEx.pry:

require IEx

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

系统会询问您是否允许窥探会话:

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

此时的所有上下文都将对您可用:

pry(1)> one
1

添加到 Pawel 的回答中..

如果您 运行 使用 --trace 进行测试,您可以避免测试超时。

iex -S mix test --trace