有轨道集成测试和会话变量的问题

时间:2011-12-30 07:52:43

标签: 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
  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

所有的断言都通过了这么好,但据我所知,session [:registration]在发布到“/ user”时没有通过。

在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”。

当我发布时,我似乎无法通过该会话变量。根据我的理解,在“新注册”测试中,只要测试尚未结束,所有会话变量都保持活动状态。假设应该发布会话变量,我错了吗?有什么建议?

0 个答案:

没有答案