はじめに
個人的にRails Tutorialの第9章で書かれている通りにしてもうまく動かなかったので、つまづいた点を備忘録の意味も兼ねて書いておく。初めての記事なので、ミス等ある場合は教えていただけると大変ありがたいです。
開発環境
OS : Ubuntu 18.04
Ruby : 2.6.5
Rails : 6.0.0
永続的セッションのテストでrememberが見つからない
9.3.2の永続的セッションのテストを行うと、次のようなエラーが出た。
DRb::DRbRemoteError: undefined method `remember' for #<SesseionsHelperTest:0x00005612e5bd30c8> (NoMethodError)
app/helpers/sessions_helperにある'remember method'が見つからないとのことなので、そのmethodを含む'Sessionshelper Module'をincludeして対応。
test/helpers/sessions_helper_test.rb
require 'test_helper'
require './app/helpers/sessions_helper' # 追記
class SesseionsHelperTest < ActionView::TestCase
include SessionsHelper # 追記
def setup
@user = users(:michael)
remember(@user)
end
test "current_user returns right user when session is nil" do
assert_equal @user, current_user
assert is_logged_in?
end
test "incurrent user returns nil when remember digest is wrong" do
@user.update_attribute(:remember_digest, User.digest(User.new_token))
assert_nil current_user
end
end
勝手にテスト時はhelperは全て読み込むものだと思いこんでいたので、設定が悪いのかと思い、的はずれな方向へ行ってしまった。
参考
[Ruby on rails チュートリアル] (https://railstutorial.jp/chapters/advanced_login?version=5.1#cha-advanced_login)