Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从HTTP位置在Cucumber测试中提供静态文件_Ruby On Rails_Ruby_Cucumber_Carrierwave - Fatal编程技术网

Ruby on rails 从HTTP位置在Cucumber测试中提供静态文件

Ruby on rails 从HTTP位置在Cucumber测试中提供静态文件,ruby-on-rails,ruby,cucumber,carrierwave,Ruby On Rails,Ruby,Cucumber,Carrierwave,我正在测试一个带有Carrierwave上传器的模型的JSON API,但我只允许通过远程url上传,所以我需要一些方法来获取公共资产中文件的HTTP地址,因为我知道这些地址总是存在的 换言之: 当Rails服务器运行时,我在中有一个静态资产http://localhost:3000/assets/logo.png“。Cucumber运行时,我需要该文件的地址——也就是说,我需要在运行Cucumber时提供一个静态文件,以便Rails应用程序的不同部分可以“下载”该文件 编辑:这些测试不是用浏览

我正在测试一个带有Carrierwave上传器的模型的JSON API,但我只允许通过远程url上传,所以我需要一些方法来获取公共资产中文件的HTTP地址,因为我知道这些地址总是存在的

换言之:

当Rails服务器运行时,我在
中有一个静态资产http://localhost:3000/assets/logo.png“
。Cucumber运行时,我需要该文件的地址——也就是说,我需要在运行Cucumber时提供一个静态文件,以便Rails应用程序的不同部分可以“下载”该文件


编辑:这些测试不是用浏览器运行的,尽管(最近)它们是用会话运行的。我可能正在使用Cucumber,但我没有编写任何代码来使用或启动Capybara。

我认为您可以通过使用以下代码获取Cucumber启动的测试服务器的根uri:

对于小于2.0的水豚:

Capybara.current_session.driver.rack_server.host
Capybara.current_session.driver.rack_server.port
水豚2.0:

Capybara.current_session.server.host
Capybara.current_session.server.port

如果我正确理解你的问题。您可能希望查看类似或服务于back/mock外部请求的内容。

我没有使用Capybara,这不是用于浏览器测试,因此(据我所知),我没有当前的会话。Cucumber在机罩下使用Capybara!令人惊叹的。我将插入调试器,看看这是否有效。在
Capybara上暂停。当前会话
。只是坐在那里,什么也不做。我想你已经搞定了。唉,不,不完全是,但这可能是正确的树:一方面,我找不到任何关于如何使用文件响应请求的确认,另一方面,我得到了错误响应:
“文件”:[“无法下载文件:getaddrinfo:nodename或提供的servname,或未知”,“不能是空的”]
,这让我怀疑这些服务是否正确地劫持了CarrierWave用来获取文件的任何东西。如果这是意外的,那么我需要去破解CarrierWave,以便它使用一些可以被这些宝石劫持的东西。假编辑:我刚刚做了
:body=>file.open(path)
,通过Fakeweb.Upvoting,您至少可以得到一半,但我还无法确认这些答案是否有效。我找到了Webmock的“服务文件”,但我得到了错误:
“无法下载文件:真正的HTTP连接被禁用。”。未注册的请求:获取…