Ruby on rails 如何使用Capybara测试提供静态文件的Rack::Directory?或者如何使用Capybara测试机架中间件?
我使用Rack::Directory.new将公用文件夹中的目录直接映射到网站并提供静态文件 My config.ru包含:Ruby on rails 如何使用Capybara测试提供静态文件的Rack::Directory?或者如何使用Capybara测试机架中间件?,ruby-on-rails,sinatra,cucumber,capybara,rack,Ruby On Rails,Sinatra,Cucumber,Capybara,Rack,我使用Rack::Directory.new将公用文件夹中的目录直接映射到网站并提供静态文件 My config.ru包含: map '/pdfs/' do run Rack::Directory.new('./public/resources/pdfs') end require './app/main.rb' run MainSinatra 我正在使用Sinatra应用程序运行应用程序的其余部分,并使用cucumber Sinatra预生成一些文件 当我尝试将路径加载到路径文件中
map '/pdfs/' do
run Rack::Directory.new('./public/resources/pdfs')
end
require './app/main.rb'
run MainSinatra
我正在使用Sinatra应用程序运行应用程序的其余部分,并使用cucumber Sinatra预生成一些文件
当我尝试将路径加载到路径文件中的PDF时,出现错误。功能/支持/路径.rb:
def path_to(page_name)
case page_name
when /dias_all/
'/pdfs'
...
end
然后在我的steps文件中
visit dias_all
我得到一个404错误
我尝试将其添加到features/support/env.rb文件中,但仍然出现错误:
class MainSinatraWorld
...
include Rack::Test::Methods
def app
Rack::Directory.new('./public/resources/pdfs')
end
end
然后将step文件访问更改为get,但仍然出现错误
get('/pdfs/dias')
错误:
No response yet. Request a page first. (Rack::Test::Error)
如何通过水豚或黄瓜测试文件夹的内容 通过将env.rb中的这一行从以下内容更改为:
Capybara.app = MainSinatra
致:
这将从框架文件(config.ru)运行应用程序,并加载所有没有加载的中间件
我从中找到了答案
Capybara.app = eval "Rack::Builder.new {( " + File.read(File.dirname(__FILE__) +
'/../../config.ru') + "\n )}"