Rails、Omniauth、KoalaでFacebook情報を使用するアプリケーションを作成しています。Ryan Bates Facebook Railscastsを使用して、ユーザーモデルでこのfacebookメソッドを使用して、FacebookのAPIからユーザーuid、auth_tokenなどを取得します。
def facebook
@facebook ||= Koala::Facebook::API.new(oauth_token)
end
また、Facebookメソッドを呼び出してユーザーの友達から情報を取得する別のメソッドがあります。これを呼び出して、facebook_friends
私のUsersControllerショーアクションで私はこれを持っています:
def show
@user = User.find(params[:id])
@friends = @user.facebook_friends
end
そのため、showテンプレートでこれら2つのインスタンス変数を使用します。
RSpecを使用したテストの作成
これが私が作ろうとしている1つのテストです
feature 'As a logged out user' do
background do
@user = FactoryGirl.create(:user)
end
scenario 'redirects to root path' do
visit user_path @user
page.current_path.should == root_path
end
end
しかし、実行すると、次のエラーが発生します。
1) As a logged out user redirects to root path
Failure/Error: visit user_path @user
Koala::Facebook::APIError:
OAuthException: Invalid OAuth access token.
# ./app/models/user.rb:45:in `friends_birthday'
# ./app/controllers/users_controller.rb:7:in `show'
# ./spec/requests/user_integration_spec.rb:22:in `block (2 levels) in <top (required)>'
テストを実行するたびに有効なアクセストークンを使用したくないので、 RSpecを使用してユーザーモデルでFacebookの呼び出しを偽造するにはどうすればよいですか?