【发布时间】:2017-04-09 21:28:09
【问题描述】:
我正在尝试在测试中启动IEx.pry。但是我无法在 iex 会话中运行测试。请注意,我没有使用 mix。
ExUnit.start
defmodule Calc do
def add(a,b) do
a + b
end
end
defmodule TheTest do
use ExUnit.Case
test "adds two numbers" do
require IEx
IEx.pry
assert Calc.add(1, 2) == 3
end
end
我尝试在 ExUnit.run 挂起的情况下运行它并最终超时:
manuel@laptop:~/exercism/elixir/nucleotide-count$ iex test.exs
Erlang/OTP 18 [erts-7.3] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> ExUnit.run
** (exit) exited in: GenServer.call(ExUnit.Server, {:take_async_cases, 8}, 60000)
** (EXIT) time out
(elixir) lib/gen_server.ex:604: GenServer.call/3
(ex_unit) lib/ex_unit/runner.ex:71: ExUnit.Runner.loop/2
(stdlib) timer.erl:166: :timer.tc/1
(ex_unit) lib/ex_unit/runner.ex:13: ExUnit.Runner.run/2
代码已正确加载,我可以直接使用TheTest."test adds two numbers"({}) 调用它。但我希望这样做是为了启动整个套件。
【问题讨论】:
-
你为什么不使用
mix? -
我相信既然你没有使用
mix,你应该勇敢地自己启动ExUnit服务器应用程序。 -
谢谢@simone,这个答案假设这是一个
mix项目。事实并非如此。我没想到需要设置一个混合项目才能做到这一点,就像我不希望设置 Rake 在 RSpec 中运行 Pry 一样。我希望这不是答案。 -
很好的提示@mudasoba,但
:observer.start显示Elixir.ExUnit.Server正在运行。你说的是这个吗?如果是这样,问题一定出在其他地方。