Ruby on rails rails集成测试和会话变量有问题

Ruby on rails rails集成测试和会话变量有问题,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,在这里使用rails 3.1。我在集成测试中遇到了一些会话变量问题 test "new registration" do get "/user/sign_up?type=normal" assert_response :success assert_equal 'normal', session[:registration] assert_template "user_registrations/new" assert_difference('User.count', +1) do p

在这里使用rails 3.1。我在集成测试中遇到了一些会话变量问题

test "new registration" do

get "/user/sign_up?type=normal"
assert_response :success
assert_equal 'normal', session[:registration]
assert_template "user_registrations/new"


assert_difference('User.count', +1) do
  post "/user", :user => {:email => "kjsdfkjksjdf@sdfsdf.com", :user_name => "lara", :password => "dfdfdfdfdfdf", :password_confirmation => "dfdfdfdfdfdf"}
end
assert_response :redirect
assert_template "user_registrations/new"

@user = User.find_by_user_name('lara')
assert_equal 'lara', @user.user_name
@user.confirm!

end
所有的断言都通过了,所以这很好,但是从我所知道的,当post to/user时,会话[:registration]没有通过

在用户注册控制器中的“我的创建”操作中:

 if session[:registration] == "normal"
    @user.role = "normal"
    @user.status = "registering"
    @user.save
  else
    @user.role = "fan"
    @user.save
  end
因此,当用户被创建时,@user.role=fan,它应该是@user.role=normal

当我发布时,我似乎无法让会话变量通过。据我所知,在新的注册测试中,只要测试没有结束,所有会话变量都保持活动状态。我认为应该发布会话变量是错误的吗?有什么建议吗

使用open_session do | sess |然后使用sess.post,因此您可能可以执行类似的操作