La aplicación My Rails 3.2 usa OmniAuth y Devise para iniciar sesión con Twitter. El sistema de autenticación funciona bien. Me gustaría escribir una prueba de integración en rspec para asegurarme de que todo funciona. Usando la información en la wiki, escribí lo siguiente, pero sé que me están perdiendo cosas.Rails rspec y omniauth (pruebas de integración)
Bajo test.rb en config/ambientes, tengo las siguientes líneas
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:twitter] = {:provider => 'twitter', :uid => '123545'}
Mi prueba rspec se ve así:
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
La autenticación es el nombre de mi modelo y llamando .uid en la consola de rieles devuelve la cadena bien.
que estoy recibiendo el siguiente error al ejecutar esta prueba:
Failure/Error: Authentication.last.uid.should == '123545'
NoMethodError:
undefined method `uid' for nil:NilClass
Puede alguien ayudarme a averiguar cómo utilizar los simulacros OmniAuth que se proporcionan? Una explicación para por qué y cómo funciona sería apreciada también.
¡Hola! Intenté request.env ["omniauth.auth"], pero obtengo el error "método indefinido env para la clase nula" – izumeroot
BTW, aquí está la solución correcta https://gist.github.com/kinopyo/1338738 – izumeroot