Приложение My Rails 3.2 использует OmniAuth и Devise для входа в Twitter. Система аутентификации работает нормально. Я хотел бы написать интеграционный тест в rspec, чтобы убедиться, что все работает. Используя информацию в вики, я написал следующее, но я знаю, что мне чего-то не хватает.
Под test.rb в config / средах у меня есть следующие строки
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
Аутентификация - это имя моей модели, и вызов .uid в консоли rails возвращает строку отлично.
Я получаю следующую ошибку при запуске этого теста:
Failure/Error: Authentication.last.uid.should == '123545'
NoMethodError:
undefined method `uid' for nil:NilClass
Может кто-нибудь помочь мне разобраться, как использовать предоставленные макеты OmniAuth? Объяснение почему и как это работает, также будет оценено.