Получите URL или путь, предоставленный в виде строки, в тесте rspec - PullRequest
9 голосов
/ 12 июля 2011

Для контроллера, который определяет поведение боковой панели, мне нужно вызвать несколько URL;боковая панель изменится (ao) в зависимости от страницы, на которой она появляется.

describe SidebarController do
  before(:each) do
    @sidebar = SidebarController.new
  end
  it 'should return :jobseekers for root_path' do
    get(root_url)
    @sidebar.section(root_path).should eq :jobseekers
  end
end

Это, однако, не с ActionController::RoutingError: No route matches {:controller=>"sidebar", :action=>"http://test.host/"}

Могу ли я get URL или путь в виде строки?Есть ли более умный способ установить данные request., чем их ПОЛУЧЕНИЕ?

Ответы [ 2 ]

17 голосов
/ 16 июля 2011

Могу ли я получить URL или путь в виде строки?

Не в тесте контроллера. Контроллер теста на самом деле не обрабатывает URL, он настраивает тест с использованием одного из 5 поддерживаемых типов запросов (get, post, put, head, delete) и затем вызывает соответствующее действие контроллера. См. Руководство по тестированию приложений на Rails .

То, что вы ищете, - это интеграционный тест или " спецификация запроса " в терминах RSpec.

7 голосов
/ 11 мая 2012

Вот обходной путь ... на случай, если вы захотите сделать это ... не обязательно лучшим способом, но способом ... это работает на рельсах 3.2 ...

module ActionController::TestCase::Behavior
  #just parse the url and then call the regular get method
  def get_path(path)
    parsed_params = Rails.application.routes.recognize_path path
    controller = parsed_params.delete(:controller)
    action = parsed_params.delete(:action)
    get(action, parsed_params)
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...