मेरा रेल 3.2 ऐप ट्विटर के साथ साइन इन करने के लिए ओमनीएथ और डेविस का उपयोग करता है। प्रमाणीकरण प्रणाली ठीक काम करता है। मैं यह सुनिश्चित करने के लिए कि सब कुछ काम करता है, मैं rspec में एकीकरण परीक्षण लिखना चाहता हूं। विकी में जानकारी का उपयोग करके, मैंने निम्नलिखित लिखा है, लेकिन मुझे पता है कि मुझे चीजें याद आ रही हैं।रेल आरएसपीसी और ओमनीथ (एकीकरण परीक्षण)
config/वातावरण में 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
प्रमाणीकरण अपने मॉडल और .uid बुला का नाम है रेल कंसोल में स्ट्रिंग ठीक देता है।
Failure/Error: Authentication.last.uid.should == '123545'
NoMethodError:
undefined method `uid' for nil:NilClass
किसी को भी मदद कर सकते हैं मुझे यह पता लगाने कैसे OmniAuth mocks कि प्रदान की जाती हैं उपयोग करने के लिए:
मैं जब मैं इस परीक्षण चलाने निम्न त्रुटि हो रही है? के लिए एक स्पष्टीकरण क्यों और कैसे यह काम भी सराहना की जाएगी।
हैलो! मैंने request.env ["omniauth.auth"] की कोशिश की, लेकिन मुझे त्रुटि मिली "शून्य वर्ग के लिए अपरिभाषित विधि env" – izumeroot
बीटीडब्ल्यू, यहां सही समाधान है https://gist.github.com/kinopyo/1338738 – izumeroot