Приложение My Rails 3.2 использует OmniAuth и Devise для входа в Twitter. Система аутентификации работает нормально. Я хотел бы написать интеграционный тест в rspec, чтобы убедиться, что все работает. Используя информацию в вики, я написал следующее, но я знаю, что я пропускаю вещи.Rails rspec и omniauth (интеграционное тестирование)
Под test.rb в конфигурации/средах, у меня есть следующие строки
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 возвращает строку в порядке.
Я получаю следующее сообщение об ошибке, когда я запускаю этот тест:
Failure/Error: Authentication.last.uid.should == '123545'
NoMethodError:
undefined method `uid' for nil:NilClass
Может кто-нибудь помочь мне понять, как использовать издевается OmniAuth, которые предоставляются? Объяснение для , почему и , как, он будет также оценен.
Здравствуйте! Я попробовал request.env ["omniauth.auth"], но я получаю ошибку "undefined method env для nil class" – izumeroot
BTW, вот верное решение https://gist.github.com/kinopyo/1338738 – izumeroot