##概要
3章知見を備忘録的にまとめておく
##やったtest順序
- test編集
- route編集
- controller(controller.rb)編集
- view(.html.erb)作成
-> テスト成功
###1. test記入後
$ rails test
NameError: undefined local variable or method `static_pages_about_url'
# AboutページへのURLが見つからない
###2. route編集後
$ rails test
AbstractController::ActionNotFound:
The action 'about' could not be found for StaticPagesController
# StaticPagesコントローラにaboutアクションがない
###3. controller(controller.rb)編集後
$ rails test
ActionController::UnknownFormat: StaticPagesController#about
is missing a template for this request format and variant.
# テンプレート(view)がない
###4. view(.html.erb)作成
$ rails test
3 tests, 3 assertions, 0 failures, 0 errors, 0 skips
# 成功
##レイアウトと埋め込みRuby(Refactor)
###provideメソッド
タイトルにERBを使ったviewに、
provideメソッドで呼び出し
views/static_pages/home.html.erb
<% provide(:title, "Home") %>
<!-- yieldメソッドを呼び出すだけで何も出力しない -->
HTMLの構造はtitleタグの内容も含めてどのページも完全に同じなので
リファクタリングしてDRYにする。
最終的にレイアウトファイルのyieldメソッドで受け取り、html完成させる。
views/layouts/application.html.erb
<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>
<!-- <title>Home | Ruby on Rails Tutorial Sample App</title> -->
###minitest reporters
rails test実行時にred
やgreen
の表示が見やすくなる
test/test_helper.rb
ENV['RAILS_ENV'] ||= 'test'
require_relative '../config/environment'
require 'rails/test_help'
require "minitest/reporters"
Minitest::Reporters.use!
class ActiveSupport::TestCase
# 特定のワーカーではテストをパラレル実行する
parallelize(workers: :number_of_processors)
# すべてのテストがアルファベット順に実行されるよう、
#test/fixtures/*.ymlにあるすべてのfixtureをセットアップする
fixtures :all
# (すべてのテストで使うその他のヘルパーメソッドは省略)
end