私はdevise / omniauthを使用してfacebook経由でログインできるようにするRails 4アプリケーションを持っています。アプリケーションは機能しているようで、テストも機能しているようです。ただし、ユーザーがFacebook経由でログインする状況をチェックするテストが1つありますが、許可を与えないことにしました。
このテストは正しく機能しますが、エラー メッセージが rspec 出力に送信されます
$ rspec -fd --tag inspect
Sign in with facebook
new user
E, [2013-10-20T21:25:24.232573 #17137] ERROR -- omniauth: (facebook) Authentication failure! invalid_credentials encountered
does not grant permission
Finished in 0.21152 seconds
1 example, 0 failures
Randomised with seed 52495
また
$ rspec
....E, [2013-10-20T21:25:24.232573 #17137] ERROR -- omniauth: (facebook) Authentication failure! invalid_credentials encountered.
............................................................
Finished in 0.95531 seconds
74 examples, 0 failures
Randomized with seed 2946
関連するテスト
require 'spec_helper.rb'
feature "sign in with facebook" do
context "new user" do
scenario "does not grant permission", inspect: true do
dont_sign_in_with_facebook
expect(notice_area).to have_content "Could not authenticate you from Facebook because \"Invalid credentials\""
end
end
end
および authentication_helper
module Features
module AuthenticationHelpers
def dont_sign_in_with_facebook
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:facebook] = :invalid_credentials
visit "/users/auth/facebook"
end
end
end
rspec出力からのエラーメッセージを抑制するためにできることはありますか?
編集
@Shepmaster で説明されている無音機能を実装しようとしましたが、問題は解決しませんでした。次に、rspec コマンドからエラーをリダイレクトしようとしました。
rspec -fd --tag inspect 2> /dev/null
Sign in with facebook
new user
E, [2013-10-20T21:25:24.232573 #17137] ERROR -- omniauth: (facebook) Authentication failure! invalid_credentials encounterd
does not grant permission
Finished in 0.21152 seconds
1 example, 0 failures
Randomised with seed 65190
および標準出力のリダイレクト
rspec -fd --tag inspect > /dev/null
出力なし!
そして最後に出力オプションを使用する
rspec -fd --tag inspect -o /tmp/rspec.out 2> /dev/null
cat /tmp/rspec.out
Sign in with facebook
new user
does not grant permission
Finished in 0.21152 seconds
1 example, 0 failures
Randomised with seed 65190
@shepmaster からの回答を使用した回答
module Features
module AuthenticationHelpers
def dont_sign_in_with_facebook
OmniAuth.config.test_mode = true
OmniAuth.config.mock_auth[:facebook] = :invalid_credentials
silence_omniauth {visit "/users/auth/facebook"}
end
end
end