1

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の呼び出しを偽造するにはどうすればよいですか?

4

1 に答える 1

4

VCRがその答えです、それについて優れたrailscastsをチェックできますhttp://railscasts.com/episodes/291-testing-with-vcr 私のサンプルプロジェクトで見つけることができるいくつかの例:https ://github.com/lucassus/locomotive /blob/master/spec/features/user_facebook_connect_spec.rb

于 2012-10-15T18:58:32.223 に答える