每当我尝试对capybara-webkit运行测试时,它都无法找到侦听端口,因此它会尝试使用0,这会导致以下错误:
Failure/Error: visit user_path
Errno::EADDRNOTAVAIL:
The requested address is not valid in its context. - connect(2)
经过大量时间调试capybara-webkit的功能后,我发现问题是以下代码行(capybara-webkit-1.1.1 / lib / capybara / webkit / connection.rb :: open_pipe ):
_, @pipe_stdout, @pipe_stderr, wait_thr = Open3.popen3(SERVER_PATH)
当它调用WebKit服务器时,WebKit服务器启动并应输出与STDOUT类似的内容:
Capybara-webkit server started, listening on port: 53467
当我在控制台中手动启动该过程时,这肯定是我所看到的。但是,每当我尝试阅读@pipe_stdout
或@pipe_stderr
时,我得到的只是nil
。即使我等到管道准备就绪(如capybara-webkit连接类中所示),也可以使用:
IO.select([@pipe_stdout], nil, nil, WEBKIT_SERVER_START_TIMEOUT)
我仍然看到同样的问题。在Ruby IO类等方面,我几乎是一个新手。我已经尝试了一些我能想到的测试/调试它并让Open3.popen3
正确地将相同的消息返回到STDOUT,我可以在控制台中看到无济于事。
有关其他事情的任何想法或想法可以尝试吗?有什么明显的东西让我失踪吗?我知道大多数Capybara维护者都在Mac上工作,这似乎对他们有用,所以这可能是popen3
如何使用Windows的问题?