Ứng dụng Rails 3.2 của tôi sử dụng OmniAuth và Devise để đăng nhập bằng Twitter. Hệ thống xác thực hoạt động tốt. Tôi muốn viết một bài kiểm tra tích hợp trong rspec để đảm bảo mọi thứ hoạt động. Sử dụng thông tin trong wiki, tôi đã viết những điều sau đây, nhưng tôi biết tôi đang thiếu những thứ.Rails rspec và omniauth (kiểm thử tích hợp)
Dưới test.rb trong config/môi trường, tôi đã những dòng sau
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:twitter] = {:provider => 'twitter', :uid => '123545'}
kiểm tra rspec của tôi trông như thế này:
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
xác thực là tên của mô hình và gọi .uid của tôi trong giao diện điều khiển đường ray trả về chuỗi tiền phạt.
Tôi nhận được lỗi sau khi tôi chạy thử nghiệm này:
Failure/Error: Authentication.last.uid.should == '123545'
NoMethodError:
undefined method `uid' for nil:NilClass
bất cứ ai có thể giúp tôi tìm ra cách để sử dụng mocks OmniAuth được cung cấp? Giải thích cho lý do tại sao và cách hoạt động của cũng sẽ được đánh giá cao.
Xin chào! Tôi đã thử request.env ["omniauth.auth"], nhưng tôi nhận được lỗi "không xác định phương thức env cho lớp nil" – izumeroot
BTW, đây là giải pháp đúng https://gist.github.com/kinopyo/1338738 – izumeroot