您当前的位置: 首页 >  ar

Rails rspec测试报patch user_path(user) param not found: user的解决

发布时间:2017-01-14 21:38:46 ,浏览量:0

其实道理很简单,就是在User控制器的update方法中有一个验证:

def user_params
      params.require(:user).permit(:name,:email,:password,:password_confirmation) end

如果params里面没有user,或者user里没有上面那些指定的属性名则中断代码,而在测试里引发这一错误的是以下一句:

before { patch user_path(user) }

patch方法是向后面的路径发送PATCH请求,而后面的user_path(user)则会生成如下路径:

/users/user_id

可以很清楚的看到以上行为没有向params传递任何user参数,所以会报如题的错误.

而接下来我们在User控制器中做了如下改动:

before_action :signed_in_user,only:[:edit,:update] def signed_in_user
      redirect_to signin_url,notice:"Please sign in." unless signed_in? end

原来出错的测试就得以通过,其的原因就是代码流在用户没有登录的时候会直接跳转到signin_url中,根本不会进行上面的params验证,所以错误自然得以消除.

关注
打赏
1688896170
查看更多评论

暂无认证

  • 0浏览

    0关注

    107766博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0481s