Кажется, что RSpec ломается, когда в операторе сопоставления маршрута есть подкаталог (или вложенный маршрут) в списке - PullRequest
2 голосов
/ 15 сентября 2011
it "should match login for existing account" do
  { :get => 'http://www.' + @business.subdomain + '.lvh.me:3000/login' }.should route_to({:controller => "go", :action => "index"})
end

match '/login' => 'admin/calendars#index' # this one should actually work, but fails:

The recognized options <{"controller"=>"errors", "action"=>"handle404", "a"=>"login"}> did not match <{"controller"=>"go", "action"=>"index"}>, difference: <{"controller"=>"go", "action"=>"index", "a"=>"login"}>.

Определенный маршрут контроллера # здесь существует, но каталог / вложенный маршрут ('admin /'), кажется, вызывает сбой. Даже если маршрут не существует, он должен потерпеть неудачу так же, как и следующий, учитывая, что указанный там маршрут ('calendars # index') не существует. Существование получающихся маршрутов не имеет значения - поскольку это должно только проверить, работает ли отображение. Есть идеи как обойти это?

  match '/login' => 'calendars#index' #this one fails as expected:

The recognized options <{"controller"=>"calendars", "action"=>"index"}> did not match <{"controller"=>"go", "action"=>"index"}>, difference: <{"controller"=>"go"}>

1 Ответ

0 голосов
/ 23 марта 2013

Ваш тестовый маршрут неверен:

it "should match login for existing account" do
  { :get => 'http://www.' + @business.subdomain + '.lvh.me:3000/login' }.should route_to({:controller => "go", :action => "index"})
end

, вероятно, следует читать:

it "should match login for existing account" do
  { :get => 'http://' + @business.subdomain + '.lvh.me:3000/login' }.should route_to({:controller => "go", :action => "index"})
end

так как предположительно вы хотите проверить http://foo.lvh.me/etc не http://www.foo.lvh.me и т. Д.

...