Привет, я недавно унаследовал проект, в котором бывший разработчик не был знаком с рельсами, и решил поместить много важной логики в хелперы представлений.
class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
include BannersHelper
include UsersHelper
include EventsHelper
end
В частности, управление сессиями. Это нормально и работает с приложением, но у меня проблемы с написанием тестов для этого.
Конкретный пример. Некоторые действия выполняют before_filter
, чтобы узнать, является ли current_user
администратором. Этот current_user
обычно устанавливается методом sessions_helper
, который является общим для всех наших контроллеров. Поэтому, чтобы правильно протестировать наши контроллеры, мне нужно иметь возможность использовать этот метод current_user
.
Я пробовал это:
require 'test_helper'
require File.expand_path('../../../app/helpers/sessions_helper.rb', __FILE__)
class AppsControllerTest < ActionController::TestCase
setup do
@app = apps(:one)
current_user = users(:one)
end
test "should create app" do
assert_difference('App.count') do
post :create, :app => @app.attributes
end
end
Оператор require находит session_helper.rb
в порядке, но без магии Rails он недоступен так же, как в AppsControllerTest
.
Как я могу подделать эту сумасшедшую установку для тестирования?
include SessionsHelper
внутри классаAppsControllerTest
не помогает? Если вы собираетесь активно разрабатывать это приложение, я настоятельно рекомендую провести рефакторинг кода, написанного ими, это не имеет смысла, вы сэкономите время. Похоже, вы просто пытаетесь поддерживать его в рабочем состоянии, и у вас нет времени вкладывать в это средства. - person Jeremy   schedule 12.11.2010