4

我的会话控制器中有一个变量。

session[:facebook_profile_id] = @user_info['id']

@user_info['id'] 是一个整数。示例:123

然后我在主控制器中使用该会话变量从数据库中获取配置文件对象。

def show
    @facebook_profile = FacebookProfile.find_by_facebook_id(session[:facebook_profile_id])
end

使用 session 变量找到新对象并在我的应用程序中使用,因此没有它我的 rspec 测试会失败。

这是我的 FacebookProfile 工厂:

FactoryGirl.define do 
  factory :facebook_profile do |f|
    f.facebook_id 123
  end
end

在我对应用程序的规范测试中,我在每次测试之前创建了 Factory 实例:

FactoryGirl.create(:facebook_profile).should be_valid

如何在我的规范测试中设置 session[:facebook_profile_id] 变量,以便@facebook_profile 的查找不会失败?

我试过存根,但无法让它工作。另外,我一直在我的功能规范中尝试这个。我应该在控制器规范中这样做吗?

4

1 回答 1

9

如果您的目的是功能测试,那么直接在测试中分配它很简单

# describe .....
  session[:facebook_profile_id] = 123
# end

赋值后也可以直接获取变量

session[:facebook_profile_id] 
于 2013-04-22T00:18:43.073 回答