Tôi đã nhìn vào wiki đá quý và theo các hướng dẫn nhưng đối với một số lý do tôi nhận được một nil
khi thực hiện một thử nghiệm omniauth:Làm thế nào để bạn kiểm tra facebook omni-auth bằng rspec?
user_sessions_controller_spec.rb:
require 'spec_helper'
describe UserSessionsController, "OmniAuth" do
before do
request.env["omniauth.auth"] = OmniAuth.config.mock_auth[:facebook]
end
it "sets a session variable to the OmniAuth auth hash" do
request.env["omniauth.auth"]['uid'].should == '123545'
end
end
spec_helper.rb:
RACK_ENV = ENV['ENVIRONMENT'] ||= 'test'
OmniAuth.config.test_mode = true
omniauth_hash =
{:provider => "facebook",
:uid => "1234",
:info => {:name => "John Doe",
:email => "[email protected]"},
:credentials => {:token => "testtoken234tsdf"}}
OmniAuth.config.add_mock(:facebook, omniauth_hash)
kết quả spec:
Failures:
1) UserSessionsController OmniAuth sets a session variable to the OmniAuth auth hash
Failure/Error: request.env["omniauth.auth"]['uid'].should == '123545'
NoMethodError:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
# ./spec/controllers/user_sessions_controller_spec.rb:10:in `block (2 levels) in <top (required)>'
Điều này sẽ được thực hiện như thế nào nếu bạn không sử dụng Devise? – freddyrangel