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

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

no image
Macで.htaccessを表示する設定

MacBook Air2代目。以前は行っていた.(ドット)がついたファイルをMa …

ブログをアプリを使ってiPhoneから更新

この前の投稿と、前の前の投稿はiphoneから行いました。ノートPCだとブログ投 …

Railsを立ち上げる

RubyのアップデートとRailsのインストールが無事終わったので、いよいよRa …

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

10.3.2マイクロポストを作成する、です。 テストを書く micropostの …

no image
データベースのリファクタリング?

ruby on rails3プリケーションプログラミングの本の内容をruby2. …

Macにコマンドラインツールをインストールする

Mac miniのメモリが16Mになったので、気分も新たに、Ruby on Ra …

iPad使用前/使用後、雑感。

5/28にiPadがAppleStoreからクロネコヤマトで届けられました。 週 …

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

8章で随分おなかいっぱいになりました。 第9章 ユーザーの更新・表示・削除、です …

MicrosoftのFutureVision 2019 vs 2011 vs 2010

Wiredで取り上げられたので、今日はMSのFutureVisionが話題でした …