心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。3.2.2章。

   


静的ページにaboutというページを追加するのですが、rails gを先にするのではなく、テストコードを書くところから始まります。いよいよTDDっぽくなってきました。実際に、あとからページ追加っていうのも開発ではおおいにあり得るので、その練習もできますね。

Aboutページのテストを追加

リスト3.14 Aboutページのテストを追加する。
spec/requests/static_pages_spec.rb

require 'spec_helper'

describe "静的ページのテスト" do

  describe "Homeページのテスト" do
    it "コンテンツに'Twili'という文字がある" do
      visit '/static_pages/home'
      expect(page).to have_content('Twili')
    end
  end

  describe "Helpページのテスト" do

    it "コンテンツに'Help'という文字がある" do
      visit '/static_pages/help'
      expect(page).to have_content('Help')
    end
  end

  describe "Aboutページのテスト" do

    it "コンテンツに'About Us'という文字がある" do 
      visit '/static_pages/about'
      expect(page).to have_content('About Us')
    end
  end
end

静的ページのテストコードが長くなってきました。後でリファクタリングするはずですが、とりあえずこのまま。
テストを実行すると、まだaboutページすらないので当然失敗します。

bundle exec rspec spec/requests/static_pages_spec.rb

1) 静的ページのテスト Aboutページのテスト コンテンツに’About Us’という文字がある
Failure/Error: visit ‘/static_pages/about’
ActionController::RoutingError:
    No route matches [GET] “/static_pages/about”

2つエラーの理由をだされてしまいました。

aboutのルートを追加する

ではabouをrains gするのではなく、about用のルートを追加する。だそうです。これはチュートリアルなので、出たエラーを一つづつつぶしてみよう!っていうことですね。
まずは

No route matches [GET] “/static_pages/about”

これをつぶします。

リスト3.15 about用のルートを追加する。
config/routes.rb

Twili::Application.routes.draw do
  get "static_pages/home"
  get "static_pages/help"
  get "static_pages/about" #<=今回追加する
end

テストを実行すると、

bundle exec rspec spec/requests/static_pages_spec.rb

1) 静的ページのテスト Aboutページのテスト コンテンツに’About Us’という文字がある
Failure/Error: visit ‘/static_pages/about’
AbstractController::ActionNotFound:
The action ‘about’ could not be found for StaticPagesController

相変わらず2つエラー理由ですが、2番目の理由がActionController::RoutingError: からAbstractController::ActionNotFound:に変わりました。

StaticPagesコントローラにaboutのアクションを追加する

リスト3.16 aboutアクションが追加されたStaticPagesコントローラ。
app/controllers/static_pages_controller.rb

class StaticPagesController < ApplicationController
  def home
  end

  def help
  end

  def about
  end
end

rails gすれば自動的に追加になりますがお勉強のため手修正です。
テストを実行すると、

bundle exec rspec spec/requests/static_pages_spec.rb

1) 静的ページのテスト Aboutページのテスト コンテンツに’About Us’という文字がある
Failure/Error: visit ‘/static_pages/about’
ActionView::MissingTemplate:
Missing template static_pages/about, application/about with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in:
* “/Users/tomokoni/rails/Twili/app/views”

もっと長いエラーメッセージが出てしまった。MissingTemplateだそうです。当然です。viewありませんから。

aboutのviewを追加する

これもrails gすれば自動的にできますが、お勉強です!
リスト3.17 Aboutページのコード
app/views/static_pages/about.html.erb

<h1>About Us</h1>
<p>
  The <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
  is a project to make a book and screencasts to teach web development
  with <a href="http://rubyonrails.org/">Ruby on Rails</a>. This
  is the sample application for the tutorial.
</p>

RailsTutorialのままです。
テストを実行すると、

bundle exec rspec spec/requests/static_pages_spec.rb

今度はpassしました。3 examples, 0 failures
ばんざいーい。

RailsTutorialにはありませんが、いったんここでcommitしてもよいかも。
次は「3.3少しだけ動的なページ」です。

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
wordpressのサーバー移行したい

本当に自分の備忘録として。 サーバー移行したいなと考えています。 同時に、Wor …

RailsTutorial4.0を高速で復習する。8章。

仕様の探求 userモデルには、登録と認証、承認に必要なモデルは既に作ってありま …

no image
rbenvとruby-buildのインストール

諸々のものをインストールしたら、次はHomebrewを使ってrbenvとruby …

no image
RailsTutorial4.0を高速で復習する。9.2章。

9.2認可、です。 自分以外の人が自分のProfileを変更できないようにします …

no image
iPad2発表

新しいiPad2がAppleより発表されました。動作は速くHDMIをサポートし、 …

no image
プログラミングから離れた理由を思い出した

私は転職が多く5社で正社員で経験しています。全部IT系なのだけど全部職種が違いま …

no image
RailsTutorial4.0を高速で復習する。4.1章の途中から。

さて、4.1章の途中にある、変だなと思っている箇所、 リスト4.4 Homeペー …

no image
RailsTutorial4.0を高速で復習する。6.3.3章。

6.3.3ユーザー認証、です。 新規ユーザー登録のときは入力で、:passwor …

no image
MacBookAirは壊れるの?

1ヶ月ぶりにWindows機を立ち上げています。HDDのカリカリ言う音が冷や汗も …

no image
RailsTutorial4.0を高速で復習する。7.1.2章

7.1.2ユーザーリソース、です。 /user/newを/signupで表示させ …