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

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

  関連記事

BD再生のオープンソース

メディアはシリコンすら持ちたくない主義なのですが、どうしてもBluelay Di …

attr_accessorでRuby文法を噛み締める

作りたいwebアプリがあって、プログラムやろう!となって現在にいたってる訳です。 …

no image
もう一度、Future Vision

2019年の世界。あと7年。 登場人物に日本人がいない事にも注目してほしい。 関 …

no image
RailsTutorial4.0を高速で復習する。4章と4.1章。

さて、4章です。4章ではRubyに関する内容が多かったような記憶が。 動的なWe …

BiglobeでWimax契約して怒った

久々にダメサービスに遭遇して怒ったので書きます。 BiglobeでWimax契約 …

初めてのRuby2章「配列とハッシュ」

Railsだってgemの一種!ってことで、Rubyの文法からちゃんとやりたいです …

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

11.2フォローしているユーザー用のWebインターフェイス、です。 モデルができ …

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

9.3すべてのユーザーを表示する、です。 いろいろ細かい実装するまえにこれやるべ …

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

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

Provisioning fileが作成できない!

iPhoneアプリを公開するために、itunes connectでProvisi …