我正在制作一个将 Facebook 信息与 Rails、Omniauth 和 Koala 一起使用的应用程序。使用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
所以我在我的展示模板中使用了这两个实例变量。
使用 RSpec 编写测试
这是我正在尝试进行的一项测试
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 调用?