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

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

  関連記事

no image
Everyday Rails3章 バリデーションをテストする

さっき、Aaronを削除したらテスト失敗することを確認しましたが、名前入力無しの …

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

巷にRails4本がなく、Rails3本をRails4でやってみようとしたところ …

つながらないWimaxの電波倍返し

googleが見つかりませんと言われると、対外電波切れ。 本日は多発しています。 …

no image
ブログのデザイン開発、着手から完成まで今日1日でやります

久々のブログです。 昨日アクセス解析も1年ぶりに見たのですが、何がなくとも一定の …

no image
booknest使ってみました

先日、日本サムスンのデザイナー、吉田道生氏のお話をお伺いしました。 非常に興味深 …

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

10.2マイクロポストを表示する、です。 ポストの投稿ではなく、表示だけを先に作 …

rails gでのファイル名、クラス名、アクション名

rails gすると、コントローラーとアクションができますが、 その書き方とファ …

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

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

iPhoneアプリ開発のお勉強方法です。

Objective-C苦節3ヶ月アプリ作れるようになったと書きましたが、本日アプ …

no image
future vision 2019 vs 2010

マイクロソフトのfuture visonが話題らしい。 2019年の近未来。 情 …