我有一个测试程序,它通过向rails服务器发送大块数据来模仿用户的iOS设备.该程序在测试之外工作正常.在测试中,程序立即超时,因为它找不到服务器.
我的配置,在env.rb中:
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
Capybara.server_port = 3123
Capybara.app_host = "http://0.0.0.0:3123"
Run Code Online (Sandbox Code Playgroud)
在测试中,我尝试过类似的东西
puts Capybara.current_session.current_host
puts Capybara.current_session.current_url
Run Code Online (Sandbox Code Playgroud)
等等,但这些都是空白的.这样做:
放下Capybara.current_session
产生一个内存地址,所以我知道当前的会话正在运行.
这是在宝石文件中像Capybara这样设置的:
gem 'capybara', '~> 2.0.2
Run Code Online (Sandbox Code Playgroud)
我已经看到了几个基于此的问题,但他们的答案对我不起作用.具体来说,Capybara似乎没有像我指定的那样设置当前主机或url,也不是实际允许我查看当前会话的内容.那么我该如何解决这个问题并指定一个特定的端口和网址呢?
我想使用Faraday和RSpec测试我们的Rails应用程序的HTTP API.法拉第需要主机网址+端口.不幸的是,测试环境的端口总是会改变.如何在规范中以编程方式访问当前端口?
有没有办法在测试中获得在黄瓜测试期间运行rails应用程序的端口?我试过Capybara.server_port,但那是零.
谢谢.
当我尝试使用并行测试 Gem 并行运行我的规范时,我收到以下错误消息:
\n\nfoo:~/Projects/cucumber-capybara-saucelabs/spec/requests [] \xe2\x9e\x9c rake parallel:spec\n(in /Volumes/Storage/Projects/cucumber-capybara-saucelabs)\n8 processes for 5 specs, ~ 0 specs per process\nStarting Rails server on port 3001...\nStarting Rails server on port 3001...\nStarting Rails server on port 3001...\nStarting Rails server on port 3001...\nStarting Rails server on port 3001...\n[2013-05-22 14:40:12] INFO WEBrick 1.3.1\n[2013-05-22 14:40:12] INFO ruby 1.9.3 (2013-02-22) [x86_64-darwin12.3.0]\n[2013-05-22 14:40:12] INFO WEBrick::HTTPServer#start: pid=33256 port=3001\nRails server running!\nRails server running!\nRails server running!\nRails server running!\n[2013-05-22 14:40:12] INFO WEBrick 1.3.1\n[2013-05-22 14:40:12] INFO WEBrick 1.3.1\n[2013-05-22 14:40:12] INFO ruby 1.9.3 (2013-02-22) …
Run Code Online (Sandbox Code Playgroud)