我正在使用Rack :: Directory.new将公用文件夹中的目录直接映射到网站并提供静态文件。
我的config.ru包含:
map '/pdfs/' do
run Rack::Directory.new('./public/resources/pdfs')
end
require './app/main.rb'
run MainSinatra
我正在使用Sinatra App运行应用程序的其余部分并使用 cucumber-sinatra 预生成一些文件。
当我尝试在路径文件中加载pdfs的路径时,我收到错误 特征/支持/ 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
然后将步骤文件访问更改为get,但仍然出现错误。
get('/pdfs/dias')
错误:
No response yet. Request a page first. (Rack::Test::Error)
如何通过Capybara或Cucumber测试文件夹的内容?
答案 0 :(得分:1)
我能够通过改变env.rb中的这一行来弄清楚如何解决这个问题:
Capybara.app = MainSinatra
到:
Capybara.app = eval "Rack::Builder.new {( " + File.read(File.dirname(__FILE__) +
'/../../config.ru') + "\n )}"
这将从机架文件(config.ru)运行应用程序并加载所有未加载的中间件。
我在blog找到了答案。