Rails rspec и omniauth (интеграционное тестирование)

Приложение My Rails 3.2 использует OmniAuth и Devise для входа в Twitter. Система аутентификации работает нормально.Я хотел бы написать интеграционный тест в rspec, чтобы убедиться, что все работает. Используя информацию в вики, я написал следующее, но я знаю, что что-то упускаю.

В test.rb в config/environments у меня есть следующие строки.

OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:twitter] = {:provider => 'twitter', :uid => '123545'}

Мой тест rspec выглядит так:

describe "Authentications" do
  context "without signing into app" do

    it "twitter sign in button should lead to twitter authentication page" do
      visit root_path
      click_link "Sign in with Twitter"
      Authentication.last.uid.should == '123545'
    end

  end
end

Authentication — это имя моей модели, и вызов .uid в консоли rails возвращает строку fine.

При выполнении этого теста я получаю следующую ошибку:

Failure/Error: Authentication.last.uid.should == '123545'
NoMethodError:
undefined method `uid' for nil:NilClass

Может ли кто-нибудь помочь мне понять, как использовать предоставленные имитации OmniAuth? Объяснение , почемуи , какэто работает, также приветствуется.

9
задан mehulkar 16 March 2012 в 02:07
поделиться