Я пишу тесты с rspec для моего контроллера приложения в моем приложении rails (написано в Rails 4), и у меня возникает проблема, когда он не распознает маршрут для HTTP-запроса, который я отправляю. Я знаю, что есть способ сделать это с помощью MyApp :: Application.routes, но я не могу заставить его работать.Как создать маршрут для тестирования?
#application_controller_spec.rb
require 'spec_helper'
class TestController < ApplicationController
def index; end
end
describe TestController do
before(:each) do
@first_user = FactoryGirl.create(:user)
# this is to ensure that all before_filters are run
controller.stub(:first_time_user)
controller.stub(:current_user)
end
describe 'first_time_user' do
before(:each) do
controller.unstub(:first_time_user)
end
context 'is in db' do
before(:each) do
@user = FactoryGirl.create(:user)
controller.stub(:current_user).and_return(@user)
end
it 'should not redirect' do
get :index
response.should_not be_redirect
end
end
context 'is not in db' do
context 'session[:cas_user] does not exist' do
it 'should return nil' do
get :index
expect(assigns(:current_user)).to eq(nil)
end
end
it "should redirect_to new_user_path" do
controller.stub(:current_user, redirect: true).and_return(nil)
get :index
response.should be_redirect
end
end
end
Ошибка я получаю прямо сейчас
No route matches {:action=>"index", :controller=>"test"}
Я хотел бы добавить тест # индексный путь к конфигурации/routes.rb, но не распознает контроллер испытания, так что я хочу сделать что-то вроде
MyApp::Application.routes.append do
controller :test do
get 'test/index' => :index
end
end
, но я не уверен, где добавить это, или если это даже работает в RSpec. Любая помощь будет замечательной!
Как вы имели в виду: «Я бы добавил маршрут указателя теста к config/routes.rb, но он не распознает контрольный контроллер»? Добавьте маршрут в route.rb и выполните «рейк-маршруты» с терминала и проверьте выход. Может быть проблема с сингулярным/множественным числом и генерация имени контроллера. –
Извините, это было неясно - когда я рейка маршрутов, он бросает «rake aborted! Missing: controller» Проблема заключается в том, что Test Controller существует только в файле «application_controller_spec.rb» – GoodLuckGanesh