Персональный блог ЗЫ

RSpec 1.3.0, изменение в поведении. Стаббирование текущего пользователя

  •  
January 31, 2010 13:330 коммент.

Сегодня наводил порядок в тестах для своего проекта.
Заметил, что многие тесты упали.

Система многопользовательская
Мультидоменная

Оказалось, что не работают вызовы переменных
которые раньше были вполне работоспособными.

И так:

Среда разработки

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

 

 

, ,
Зарегистрируйтесь для добавления сообщений