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

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

  関連記事

GitにRailsプロジェクトをpushする

HomebrewerでGitをインストールし、Rails 3.2やRails4. …

パーフェクトRuby 2章Rubyの基礎 2-7-3 シンボル

p61 2-7-3 シンボル シンボル好きです。Ruby始めた頃の一番最初の疑問 …

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

8.1.3サインインのフォーム、です。 ログイン画面を作る 入力フォームをfor …

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

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

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

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

Chromeでの文字化けを対処しました。

WordPressで自作テンプレを作ってみたのはよいものの、困った問題が2つ。 …

no image
railsのエラーメッセージを日本語化

message:で渡すエラーメッセージや、その他いろんな箇所を日本語化します。 …

実機なしでRetina 3.5インチのスクリーンショットを撮る

iPhoneアプリ公開時に2種類の画像登録が必要です。 1つ目はアイコン。アプリ …

画面キャプチャ系extension

現在メインブラウザはchromeを利用しています。画面キャプチャextensio …

no image
Railsの%

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