2

私はomniauthをテストしようとしています。config/environments/test.rb に入れました

OmniAuth.config.test_mode = true

そして私のspec_helper.rbで

OmniAuth.config.add_mock(:facebook,
                             { :provider => 'facebook',
                               :uid => '1234567',
                               :info => { :first_name => 'Jonathan', :name=> 'Jonathan', :email => 'jon@jak.com', :image => 'http://graph.facebook.com/1234567/picture?type=square'},
                               :credentials => {
                                 :expires_at => 1351270850,
                                 :token=> 'AAADzk0b791YBAHCNhBI3n6ScmWvuXTY4yIUqXr9WiZCg1R808RYzaHxsHnrbn62IwrIgZCfSBZAVIP6ptF41nm8YtRtZCeBbxbbz1mF8RQZDZD'
                                } })

そして、私のリクエストコントローラーで:

it "testing omniauth hash" do
  visit '/auth/facebook'
  request.env["omniauth.auth"][:uid].should == '1234567'
end

そして得る:

Failures:

  1) Login logins with the OmniAuth auth hash
     Failure/Error: request.env["omniauth.auth"][:uid].should == '1234567'
     NoMethodError:
       undefined method `env' for nil:NilClass
     # ./spec/requests/login_spec.rb:38:in `block (2 levels) in <top (required)>'

Finished in 2.4 seconds
9 examples, 1 failure

何が起こっているのですか?thx事前に

編集 1 ここに画像の説明を入力

4

1 に答える 1

2

編集: 実際、エラーを再現しましたが、[http_verb] [url] を使用してネイティブ リクエストを発行しない限り、リクエスト オブジェクトがインスタンス化されないことが問題のようです。したがって、get '/auth/facebook'の代わりに使用すると機能するはずですvisit '/auth/facebook'

于 2012-09-25T03:08:52.557 に答える