Ruby on rails 如何使用Capybara测试提供静态文件的Rack::Directory?或者如何使用Capybara测试机架中间件?

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预生成一些文件 当我尝试将路径加载到路径文件中

我使用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预生成一些文件

当我尝试将路径加载到路径文件中的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 )}"