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

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

RailsTutorial4.0を高速で復習する。5.6章。演習2問目。

   


5.6演習、2問目です。これをやったら、すっ飛ばしているリンク貼り作業をします。ちょっとTDDにこだわってみています。

既にお気付きの方もいると思いますが、これまで行なってきた、レイアウト上のリンクのルーティングテストは、そのリンクが実際に正しいページへのリンクになっているかどうかをチェックしていません。このようなテストを実装する方法のひとつは、RSpecの結合テスト内でvisitとclick_linkを使用することです。レイアウトのリンクが正しく定義されていることを確認するコードを追加して、リスト5.37を補ってください。

リンクを貼るべき箇所はどこだろう

仕様の探求です。すっ飛ばしている、

  • 5.3.3章 名前付きルート
  • 5.4.2章のリスト5.35 ボタンをユーザー登録ページにリンクする

にあります。

ヘッダーナビにある、Help,Help
フッターにある、About,Contactにリンクをはります。
フッターのNewsは既に貼ってあります。
以上が5.3.3章。

5.4.2章のリスト5.35は、トップページにある”signup now”ボタンにリンクを貼る作業です。

リンクのテストを書く

仕様がわかったところで、テストを書くのですが、
”RSpecの結合テスト内でvisitとclick_link”を使うとの事。
リスト5.37 レイアウトのリンクをテストする。にだいたい答えが書いてあるので、それにならって書いてみます。
失敗するんだけど、全部itでまとめてあるので、エラーが1個しか出ない。この書き方は問題だな。
なので、テストをこう書き換えてみました。

require 'spec_helper'

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

  subject { page } 
  let(:base_title) { 'Ruby on Rails Tutorial Sample App' }
  let(:title_delimiter) { ' | ' }

  shared_examples_for "静的ページ共通テスト" do
    it { should have_content(heading) }
    it { should have_title("#{base_title}#{title_delimiter}#{heading}") }
  end

  describe "Homeページのテスト" do
    before { visit root_path }
    #コンテンツに'Twili'という文字がある" 
    it {should have_content('Twili')}
    #"トップページのタイトル(サブタイトルがない)" 
    it {should have_title("#{base_title}")}
    #"カスタマイズしたページのタイトル(タイトルにHomeがない)"
    it {should_not have_title("#{title_delimiter}Home")}
  end

  describe "Helpページのテスト" do
    before { visit help_path }
    let(:heading) { 'Help' }

    #コンテンツに'Help'という文字がある
    #サブタイトルに'Help'という文字がある 
    it_should_behave_like "静的ページ共通テスト"
  end

  describe "Aboutページのテスト" do
    before { visit about_path }
    let(:heading) { 'About' }

    #コンテンツに'About Us'という文字がある
    #サブタイトルに'About Us'という文字がある
    it_should_behave_like "静的ページ共通テスト"
  end

  describe "Contactページのテスト" do
    before { visit contact_path }
    let(:heading) { 'Contact' }

    #コンテンツに'Contact'という文字がある
    #タイトルに'Contact'という文字がある
    it_should_behave_like "静的ページ共通テスト"
  end

  describe "へッダーナビ、トップページ内、フッターのリンクチェック" do
    before { visit root_path }

    it "ヘッダーナビsample appのリンクチェック" do
      click_link "sample app"
        expect(page).to have_title("#{base_title}")
    end
    it "ヘッダーナビHomeのリンクチェック" do
      click_link "Home"
        expect(page).to have_title("#{base_title}")
    end
    it "ヘッダーナビHelpのリンクチェック" do
      click_link "Help"
        expect(page).to have_title("#{base_title}#{title_delimiter}Help")
    end
    it "ヘッダーナビSing inのリンクチェック" do
  #    click_link "Sign in"
    end
    it "トップページSign up now!のリンクチェック" do
      click_link "Sign up now!"
        expect(page).to have_title("#{base_title}#{title_delimiter}Sign up")
    end
    it "フッターAboutのリンクチェック" do
      click_link "About"
        expect(page).to have_title("#{base_title}#{title_delimiter}About Us")
    end
    it "フッターContactのリンクチェック" do
      click_link "Contact"
        expect(page).to have_title("#{base_title}#{title_delimiter}Contact")
    end
  end
end

it “” do
end
でそれぞれのリンクのテストを書いたので、実装が失敗していたらそこがエラーになります。
長くなったので続きます。テスト書けたので、リンクをひとつづつ貼って、エラーが消えるか確認していきます。

 - テクニカル ,

Message

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

  関連記事

確定申告終わったぁ〜MoneyForwardのおかげです

確定申告終わりました。青色で申請しているので決算書必要なのですが、昨年から使い始 …

railsでtest unitを生成させない

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

パーフェクトRuby 3章制御構造/メソッド/組み込み関数 3-1演算子

パーフェクトRuby2章の後は6章をやろうと思っていましたが、やっぱり順番にやっ …

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

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

OpneSSL,Readline,Libyamlをインストールする

先ほどインストールしたHomebrewを使って、rbenvをインストールしたいと …

no image
RailsTutorial4.0を高速で復習する。3.5章。最後の問題。

3.5演習、3もんめ、最後の問題です。 3.(上級者向け)「Heroku pag …

no image
Railsの%

Rubyの%じゃなくてRailsの%です。 RailsではSQLを生成するwhe …

iPadのiBooksで自炊とかしたPDFの電子書籍を読む

手順覚えないのでブログに書きます。 Bookscan使用して手持ちPDF電子書籍 …

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

6.2.5一意性を検証する、です。メールアドレスをIDとして使うため(でなくとも …

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

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