如何在集成测试中访问虚拟remember_token属性?

The*_*fly 6 integration-testing ruby-on-rails

我工作的米哈尔哈特的Ruby on Rails的教程在第8章 这里查看详情,我陷在练习8.6,笔者介绍了一种方法来访问虚拟remember_token属性在集成测试和他留下了一些为我们工作,

assert_equal assigns(:user).FILL_IN, FILL_IN
Run Code Online (Sandbox Code Playgroud)

我应该用"FILL_IN"占位符替换正确的代码.我想不出正确的那个.我试过了

assert_equal assigns(:user).cookies, remember_token
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ sessions_controller.rb

def create
     @user = User.find_by(email: params[:session][:email].downcase)
    if @user && @user.authenticate(params[:session][:password])
      log_in @user
      params[:session][:remember_me] == '1' ? remember(@user) : forget(@user)
      redirect_to @user
Run Code Online (Sandbox Code Playgroud)

但它没有用,Erros:

 "test_login_with_remembering", UsersLoginTest, 0.590876]
 test_login_with_remembering#UsersLoginTest (0.59s)
NoMethodError:         NoMethodError: undefined method `cookies' for #<User:0x007f964f1a91d0>
Run Code Online (Sandbox Code Playgroud)

我知道这很简单,我实际做了一些研究,似乎没有人问过同样的问题,因为这个教程很新.请理解我只是一个初学者,如果你能帮助我解决这个问题,我将不胜感激.

The*_*fly 13

我通过购买迈克尔的书得到了答案.答案包含在解决方案手册中.我认为值得分享,因为我问过这个问题

assert_equal assigns(:user).remember_token, cookies['remember_token']
Run Code Online (Sandbox Code Playgroud)

值得一提的是,阅读红宝石语言对于理解这段代码非常有帮助.我的问题是在我参加铁路研究之前我没有做太多关于Ruby的阅读,但这不是一个大问题,我刚刚转到Ruby的开头是为了更深入地了解Ruby语言!祝好运

  • 我仍然有一个错误,不知道为什么:NoMethodError:nil的未定义方法`remember_token':NilClass (2认同)