Проблемы контроллера пространства имен Rails 3 и Rspec 2

Я пытаюсь написать спецификацию, которая тестирует контроллер с пространством имен, назовем его Admin::FooController. Моя спецификация называется admin_foo_controller_spec.rb. В спецификации я пытаюсь написать очень простую спецификацию, чтобы увидеть, может ли она получить действие контроллера.

describe "GET 'index'" do
  it "should be successful" do
    get 'index'
    response.should be_success
  end
end

Но вместо этого я получаю сообщение об ошибке:

 Failure/Error: get 'index'
 No route matches {:controller=>"admin/foo"}

Для другого действия у меня есть в основном тот же тест, и я получаю, что ответ не успешен. В реальном веб-приложении я могу получить доступ к этим URL-адресам. Одна вещь, которую я должен упомянуть, это то, что это не ресурс RESTful (он не имеет смысла как таковой), так что на самом деле это просто группа связанных административных действий, поэтому в моем файле route.rb это в основном похоже на

namespace :admin do
  scope "foo" do
    match "action1" => "foo#action1"
    match "action2" => "foo#action2"
    match "/index" => "foo#settings"
    match "settings" => "foo#settings"
  end
end

Любые идеи, что я делаю неправильно? Кажется, что пространство имен вызывает проблемы с рельсами, особенно для новичка вроде меня. Спасибо!


person Ibrahim    schedule 24.12.2010    source источник


Ответы (1)


На вашем маршруте у вас нет индексного действия в вашем контроллере Foo, попробуйте получить «настройки»

describe "GET 'index'" do
  it "should be successful" do
    get 'settings'
    response.should be_success
  end
end

В спецификации контроллера вам нужно определить действие вашего контроллера, а не реальный маршрут. Вы пробуете маршруты в интеграционном тесте.

person shingara    schedule 24.12.2010