心はいつも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

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

  関連記事

WordPress子テーマの作り方

デザイン変更したairpucci、TwentyTwelveというWordPres …

no image
MacBookAirで真央ちゃんのテレビ放映を見ました

テレビ持っていないを公言しています。 15年以上使っていたナショナル6型ブラウン …

WordPress親テーマversion upに伴う、子テーマのバージョンアップ作業

WordPress子テーマの作り方で書いた通り、airpucciの現在のテーマは …

40秒も待てない。

自由が丘のカフェでこれ書きました。Table Modern Service、食べ …

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

11.3ステータスフィード、です。 11.3.1動機と計画、です。 仕様 mic …

no image
iPhoneのKindleアプリでChip Conley氏の本を読んでみました。その2

iPadの発売がようやく発表されました。私個人としては読書端末としての利用を期待 …

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

10.3.4マイクロポストを削除する、です。 仕様 マイクロポスト個別に削除でき …

no image
Gitをインストールする

Rails開発がしたいのですが、今後必要になるでしょうからGitをインストールし …

初めてのRuby8章 8.4特異メソッドと特異クラス

特異メソッドと特異クラス プログラムなんて、クラスの継承だけで書けてしまうのが良 …

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

演習1問目。 リスト6.20の、メールアドレスを小文字に変換するコードに対するテ …