Сегодня наводил порядок в тестах для своего проекта.
Заметил, что многие тесты упали.
Система многопользовательская
Мультидоменная
Оказалось, что не работают вызовы переменных
которые раньше были вполне работоспособными.
И так:
Среда разработки
win xp sp2
rails 234 (на 235 еще не хватило времени перебраться)
rspec (1.3.0) [gem]
rspec-rails (1.3.2) [gem]
factory girl (thoughtbot-factory_girl (1.2.2))
faker (0.3.1)
Тестирование текущего пользователя.
controller.stub!(:current_user).and_return(@site_administrator)
controller.stub!(:current_subdomain).and_return(@admin.login)
# de facto: get 'http://admin.test.host/pages/:id/edit'
get :edit, :id=>@admin_page.id
Раньше вполне прокатывал вариант с вызовом
assigns[:current_user]
assigns[:current_subdomain]
Теперь обращаться к ним нужно так:
controller.send(:current_subdomain)
controller.send(:current_user)
Если честно, то на мой взгляд это более адекватный и правильный вызов, чем был у меня раньше.. Но наверное нужно такие вещи запрещать изначально на этапе разработки. Так что с себя вину за криворукость снимаю.
Примерный вид теста:
it "11:42 31.01.2010" do
# Администратор Блога зайти в edit страницы Администратора Портала не может
# current_user= @site_administrator
# @user= @admin
controller.stub!(:current_user).and_return(@site_administrator)
controller.stub!(:current_subdomain).and_return(@admin.login)
# de facto: get 'http://admin.test.host/pages/:id/edit'
get :edit, :id=>@admin_page.id
controller.send(:current_user).should == @site_administrator
assigns[:user].should == @admin
response.should_not be_success
response.should be_redirect
response.should redirect_to(new_session_path)
end