💎
認証付き minitest の使い方
お家の検証サーバ用の備忘録です。
プロジェクト
まずプロジェクトを初期化します。
mkdir minitest && cd $_
rails new .
データの準備
scaffold する
bin/rails g scaffold Post title:string content:text
bin/rails db:migrate
見えるように
config/routes.rb
root "posts#index"
この時点では全てのテストがパス
bin/rails test
認証機能の追加
認証モジュールの追加
bundle add devise
認証機能を利用できるように
bin/rails g devise:install
bin/rails g devise user
bin/rails db:migrate
app/controller/application_controller.rb
before_action :authenticate_user!
認証していないのでテストが失敗するようになります。
bin/rails test
テストを成功させる
ヘルパーを追加します。
test/test_helper.rb
# ...
class ActionDispatch::IntegrationTest
include Devise::Test::IntegrationHelpers
end
# ...
認証用のユーザーを追加します。
test/fixtures/users.yml
one:
email: user@example.com
encrypted_password: <%= Devise::Encryptor.digest(User, 'password') %>
two:
email: user2@example.com
encrypted_password: <%= Devise::Encryptor.digest(User, 'password') %>
認証を追加する。
test/controllers/posts_controller_test.rb
# ...
setup do
@post = posts(:one)
@user = users(:one)
sign_in @user
end
# ...
これでテストが成功するようになります。
bin/rails test
Discussion