Приложение 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? Объяснение , почемуи , какэто работает, также приветствуется.