8

RailsのWebratの代わりにカピバラを使用しています。カピバラをインストールし、Gemfile で gem 'capybara' を使用しています。私が使うとき

page.should have_selector("title", :text => "anything title")

それはエラーを与える

Failure/Error: page.should have_selector("title", :text => "anything title")
expected css "title" with text "anything title" to return something

テストファイルは以下のとおりです。

require 'spec_helper'

describe "Test pages" do  
  describe "Home page" do    
    it "should have the content 'Demo App'" do
    visit '/test_pages/home'      
    page.should have_selector("title", :text => "anything title")               
  end
 end
end
4

5 に答える 5

12

使用している宝石のバージョンはわかりませんが、:text の使用が失敗した同様のインスタンスに遭遇しましたが、:content を使用するとテストに合格しました。Ubuntu Lucid Lynx で rails 3.2.3、rspec-rails 2.9.0、capybara 1.1.2、therubyracer gem を使用しています。

交換してみる

page.should have_selector("title", :text => "anything title")

page.should have_selector("title", :content => "anything title")
于 2012-05-09T02:48:35.837 に答える
1

同様の問題があります。念のためお知らせしますが、:content の使用は Capybara ではサポートされていません。:text にする必要があります。

:content の問題は、Capybara によって認識されず、無視されて PASSED と表示されることですが、これは間違った動作です。

したがって、Capybara を使用している場合は、すべての :content を :text に切り替えて、テストが本当にパスするかどうかを確認してください。気付かないエラーがある可能性があります。

于 2013-02-07T19:33:00.197 に答える
0

これを行うだけです:

expect(page).to have_title("some title")
于 2014-08-20T10:54:46.293 に答える
0

私は同じ問題に遭遇しました。経験的に私が見つけたものは次のとおりです。

page.should have_selector("title", :text => "AnyTitle")

html 出力に次のようなタグが含まれていることを期待します。

<title text="AnyTitle"/>

ただし、以下のように :text の代わりに :content を使用する場合

page.should have_selector("title", :content => "AnyTitle")

次に、html出力に次のようなタグが含まれていることが期待されます

<title>AnyTitle</title>

したがって、結果の html レンダリングに<title text="AnyTitle"/>タグが含まれる場合は :text を使用する必要があります。それ以外の場合、結果の html レンダリングに<title>AnyTitle</title>タグが含まれる場合は、代わりに :content を使用することをお勧めします。

PS my Gem 環境: capybara-2.0.2、rails-3.2.12、rspec-rails-2.12.2、webrat-0.7.3 webrat を削除すると、":conetnt" キーワードは Capybara だけでは認識されません。

しかし、それを修正するクリーンな方法は、webrat を取り除き、Gemfile にある安定した Capybara-1.1.2 をインストールすることです。

#gem webrat
gem 'capybara', '1.1.2'

プルスワンの答えを参照してください

于 2013-03-03T20:36:39.957 に答える