测试时撬
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
我是 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