0

我正在使用 Rack::Directory.new 将公用文件夹中的目录直接映射到网站并提供静态文件。

我的 config.ru 包含:

map '/pdfs/' do
  run Rack::Directory.new('./public/resources/pdfs')
end
require './app/main.rb'
   run MainSinatra

我正在使用 Sinatra 应用程序来运行应用程序的其余部分,并使用cucumber-sinatra预生成一些文件。

当我尝试在路径文件中加载 pdf 的路径时,出现错误。
功能/支持/paths.rb:

def path_to(page_name)
  case page_name    
  when /dias_all/
    '/pdfs'
  ...
end

然后在我的步骤文件中我放

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)

如何通过 Capybara 或 Cucumber 测试文件夹的内容?

4

1 回答 1

1

我能够通过将 env.rb 中的这一行更改为:

Capybara.app = MainSinatra

至:

Capybara.app = eval "Rack::Builder.new {( " + File.read(File.dirname(__FILE__) +
'/../../config.ru') + "\n )}"

这会从机架文件 (config.ru) 运行应用程序并加载所有未加载的中间件。

我在这个博客中找到了答案。

于 2013-06-17T20:32:18.513 回答