В моем people_controller_spec.rb менясессия хэш не сохраняется на RSpec тестов
before(:each) do
@office = FactoryGirl.create(:office)
@organization = FactoryGirl.create(:organization)
@user = FactoryGirl.create(:user, organization: @organization)
@request.session['user_id'] = @user.id
@request.session['current_organization_id'] = @user.organization.id
end
и у меня есть этот application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
def current_organization
if session[:current_organization_id]
Organization.find(session[:current_organization_id])
else
@current_organization ||= Organization.find(current_user.organization_id)
end
end
helper_method :current_user
helper_method :current_organization
end
Сеанс хэш-видимому, не сохраняется внутри application_controller .rb, поэтому я получаю такие ошибки при тестировании, когда @current_user в приложении_controller.rb равен нулю
6) PeopleController index sorts all people alphabetically by first_name
Failure/Error: get :index, {search: {meta_sort: "first_name.asc"}}, valid_session
NoMethodError:
undefined method `organization_id' for nil:NilClass
# ./app/controllers/application_controller.rb:15:in `current_organization'
# ./app/controllers/people_controller.rb:107:in `get_orgs'
# ./spec/controllers/people_controller_spec.rb:71:in `block (3 levels) in <top (required)>'
Я уже сделал все, но не смог.
Я использую рельсы (3.2.9) и Rspec-рельсы 2.12.2
Я решил проблему после просмотра этого Devise Test Helper - sign_in does not work
Я просто удалить все "valid_session" вызов метода.
Я уже пробовал этот, но все еще не работал. – neilmarion
Решил проблему. Проверьте мои изменения. :) – neilmarion
А - Я должен был попросить сам проверить тест. Что-то иметь в виду и для разработки тоже :) – roo