Rails 3.2 uygulamasında, Twitter ile oturum açmak için OmniAuth ve Devise kullanılır. Kimlik doğrulama sistemi iyi çalışıyor. Her şeyin çalıştığından emin olmak için rspec'te bir entegrasyon testi yazmak istiyorum. Bilgiyi wiki'de kullanarak, aşağıdakileri yazdım, ama bir şeyleri kaçırdığımı biliyorum. Yapılandırma/ortamlarda test.rb altındaRails rspec ve omniauth (tümleştirme sınaması)
, ben var aşağıdaki satırları
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:twitter] = {:provider => 'twitter', :uid => '123545'}
Benim RSpec testi şöyle görünür:
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
Kimlik benim modeli ve .UID çağıran adıdır raylar konsolda dize ince döner.
Failure/Error: Authentication.last.uid.should == '123545'
NoMethodError:
undefined method `uid' for nil:NilClass
kimse bana sağlanan OmniAuth mocks nasıl kullanılacağını anlamaya yardımcı olabilir: Ben bu testi çalıştırdığınızda
aşağıdaki hatayı alıyorum? için neden ve 'un niçin çalıştığı hakkında bir açıklama da takdir edilecektir.
Merhaba! Request.env ["omniauth.auth"] 'ı denedim, ancak "nil class için undefined method env" hatası aldım – izumeroot
BTW, burada doğru çözüm https://gist.github.com/kinopyo/1338738 – izumeroot