Как вы тестируете ограничения маршрута с помощью RSpec

Имеет пару городов в БД:

City.first.attributes => {:id => 1, :name => 'nyc'}
City.last.attributes =>  {:id => 2, :name => 'boston'}

И маршрут вроде:

match '/:city/*dest' => 'cities#do_something', :constraints => {:city => /#{City.all.map{|c| c.name}.join('|'}/}

(поэтому ограничения должны оцениваться как: / nyc | boston /)

И спецификация:

it "recognizes and generates a route for city specific paths" do
  { :put => '/bad-city/some/path' }.should route_to({:controller => "cities", :action => "do_something", :dest => 'some/path', :city => 'bad-city'})
end

Я бы ожидал неудачи. Но он проходит.

Аналогично:

it "doesn't route bad city names" do
  { :put => '/some-bad-city/some/path' }.should_not be_routable
end

Здесь я ожидаю, что он пройдет, но он терпит неудачу.

Похоже, что ограничение игнорируется в спецификациях, поскольку соответствующие города ведут себя так же, как и плохие.

Это известная проблема или мне не хватает чего-то, что мне нужно сделать?

5
задан JJD 21 August 2013 в 14:43
поделиться