带有多个控制器的Sinatra应用程序:如何告诉rspec路由是什么?

时间:2014-01-28 04:38:32

标签: ruby rspec sinatra

我正在研究一个跨越多个控制器的现有sinatra应用程序。这些目前在config.ru文件中路由,如下所示:

require 'bundler'
Bundler.require(:default)
=begin
# The gem file includes these:
gem 'rack'              ,    '1.5.2', :groups => [:default, :test]
gem 'rack-accept'       ,    '0.4.5'
gem 'rack-mount'        ,    '0.8.3'
gem 'rack-protection'   ,    '1.5.1'
gem 'rack-test'         ,    '0.6.2', :groups => [:test]
=end
use Rack::ContentType

maps = {
  '/'                  => RootController,
  '/users'             => UsersController,
  '/animals'           => AnimalsController,
}
maps.each do |path, controller|
  map(path){ run controller}
end

此文件通过config.ru启动(在Thin下)。但是测试文件不能在rackup(或Thin)下运行。 如何在rspec下加载控制器?

问题在于,当我在测试中输入'get“/ PATH”'或'post'时,Ruby会抱怨 参数不匹配(2表示0)。如果'get'没有参数,Ruby会给出不同的参数 不匹配(0表示1)。它们都有点错误 - 获取路径,可选哈希和可选块。 所以事情显然没有正确连线。

有些代码在这里:

config.ru:http://pastie.org/8673836 spec {helper.rb http://pastie.org/8673835 http://pastie.org/8673793上的错误讯息 http://pastie.org/8673785

处的简单控制器

馅饼的名称略有不同,但要点是相同的。 如果没有环境,如何连接控制器 config.ru给你?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

问题出现在代码库中,但机架无法轻松确定位置。

我在此处提交了一个错误 https://github.com/rack/rack/issues/652