ruby-on-rails – 预期的响应是a,但是
发布时间:2020-12-17 04:02:30 所属栏目:百科 来源:网络整理
导读:我正在尝试在UsersController中测试创建操作,其中用户是使用配置文件创建的;然后用户被重定向到用户的个人资料页面,但我得到错误预期的响应是 redirect,但是 200. 在用户控制器中创建操作 def create @user = User.new(user_params) if @user.save log_in @u
我正在尝试在UsersController中测试创建操作,其中用户是使用配置文件创建的;然后用户被重定向到用户的个人资料页面,但我得到错误预期的响应是< redirect>,但是< 200>.
在用户控制器中创建操作 def create @user = User.new(user_params) if @user.save log_in @user flash[:success] = "Welcome to the Mini Olympics" redirect_to user_profile_path(current_user,@profile) else render 'new' end end 使用有效信息进行注册测试 test "valid signup information" do get signup_path assert_difference 'User.count',1 do post users_path,user: @user.attributes @user.build_profile(name: "Micheal Example",street: "24 Martins St.",city: "Waterloo",state: "AW",zipcode: "22456") @user.save #assert_redirected_to user_profile_path(@user) assert_redirected_to @user.profile end assert_template 'profiles/show' assert is_logged_in? end 解决方法
错误消息表示创建操作失败,而不是重定向到用户的配置文件(状态302),它再次呈现表单(状态200).
至于它失败的原因,目前还不清楚.测试似乎将@user在控制器中的值与测试中@user的值混淆,后者是两个完全不同的对象. 在测试操作时,您可以通过params散列传递值,如上所述: post users_path,user: @user.attributes 但是测试然后再次设置@user的值,没有充分的理由.我不清楚@user的原始值(测试中的那个)获取其属性的位置. 你可能想做这样的事情: assert_difference 'User.count',1 do user = User.new user.build_profile(name: "Micheal Example",zipcode: "22456") post users_path,user: user.attributes assert_redirected_to user.profile end 局部变量用户只是为生成属性哈希值的便利.您可以轻松地将属性直接分配给哈希并将其传递给post. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |