0

Michael Hartl による Ruby on rails チュートリアルに従っています。

rspec を使用して単純なテストをリファクタリングすると失敗します。最初に機能するものを貼り付け、次に機能するものを貼り付けます ....

require 'spec_helper'

describe "Static pages" do

  describe "Home page" do

    it "should have the h1 'Sample App'" do
      visit '/static_pages/home'
      page.should have_selector('h1', :text => 'Sample App')
    end

    it "should have the title 'Home'" do
      visit '/static_pages/home'
      page.should have_selector('title',
                        :text => "Ruby on Rails Tutorial Sample App | Home")
    end
   end

    describe "Help page" do

    it "should have the h1 'Help'" do
      visit '/static_pages/help'
      page.should have_selector('h1', :text => 'Help')
    end

    it "should have the title 'Help'" do
      visit '/static_pages/help'
      page.should have_selector('title',
                        :text => "Ruby on Rails Tutorial Sample App | Help")
    end
  end
end

ここで、rspec で失敗したものを貼り付けます

require 'spec_helper'

describe "Static pages" do

  let(:base_title) { "Ruby on Rails Tutorial Sample App |" }

  describe "Home page" do

    it "should have the h1 'Sample App'" do
      visit '/static_pages/home'
      page.should have_selector('h1', :text => 'Sample App')
    end

    it "should have the title 'Home'" do
      visit '/static_pages/home'
      page.should have_selector('title', :text => "#{base_title}  Home")
    end
  end



  describe "Help page" do

    it "should have the h1 'Help'" do
      visit '/static_pages/help'
      page.should have_selector('h1', :text => 'Help')
    end

    it "should have the title 'Help'" do
      visit '/static_pages/help'
      page.should have_selector('title', :text => "#{base_title}  Help")
    end
  end 
end

また、私はこれに慣れていないので、さらに情報が必要になる可能性があることをお聞きしたいと思います...変更は明らかに

  let(:base_title) { "Ruby on Rails Tutorial Sample App |" }

助けてくれてありがとう!

失敗エラーは....

失敗:

1) 静的ページ ホームページのタイトルは 'Home' でなければなりません 失敗/エラー: page.should have_selector('title', :text => "#base_title} Home") expected css "title" with text "#base_title} Home"何かを返す # ./spec/requests/static_pages_spec.rb:16:in `ブロック (3 レベル) in '

2) 静的ページ ヘルプ ページのタイトルは 'Help' にする必要があります 失敗/エラー: page.should have_selector('title', :text => "#{base_title} Help") expected css "title" with text "Ruby on Rails Tutorial Sample App | Help」で何かを返す # ./spec/requests/static_pages_spec.rb:29:in `ブロック (3 レベル) in

4

3 に答える 3

1

この質問が出されてからしばらく経ちました。それがまだ関連している場合:

の後にスペースが 2 つある#{base_title}

スペースを削除すると、機能するはずです。

于 2012-12-04T21:06:41.977 に答える
0

CapybaraとWebratの構文を変更する前に。これはあなたの例でうまくいくはずです:

 page.should have_selector('h1', text: "#{base_title}  Help")

または、次のようなクラスに置き換えることができます。

page.should have_selector("h1[class='title']", text: "#{base_title} Help)
于 2012-07-13T23:50:47.817 に答える
0

最初の例でa を見逃したようです{:

 "title" with text "#base_title} Home"

この文字列は補間されておらず、何の関係もありませんlet

コードとテストが適切に機能する場合、その他のエラーは発生しないはずです。

于 2012-07-13T14:26:53.543 に答える