カピバラ(またはWebrat、Iの推測)とキュウリを使用して、単語の複数の出現をチェックするには?

StackOverflow https://stackoverflow.com/questions/4228038

質問

私は/Interface \d/がページに3回発生していることを知っています。しかし、私はキュウリにカピバラでこれをテストする方法がわかりません。ここに私の最初の試みだっます:

Then /^(?:|I )should see \/([^\/]*)\/ (\d+)(?:x|X| times?)?$/ do |regexp, count|
  regexp = Regexp.new(regexp)
  count = count.to_i
  if page.respond_to? :should
    page.should have_xpath('//*', { :text => regexp, :count => count })
  else
    assert page.has_xpath?('//*', { :text => regexp, :count => count })
  end
end

しかし、私のThen I should see /Interface \d+/ 3 timesため、この返し偽ます。

私はこれが原因で has_xpath all を使用しています。私のテストでこれを置くます:

puts all(:xpath, '//*', { :text => regexp}).map {|e| pp e}

結果

#<Capybara::Element tag="html" path="/html">
#<Capybara::Element tag="body" path="/html/body">
#<Capybara::Element tag="div" path="/html/body/div">
#<Capybara::Element tag="div" path="/html/body/div/div[2]">
#<Capybara::Element tag="table" path="/html/body/div/div[2]/table">
#<Capybara::Element tag="tbody" path="/html/body/div/div[2]/table/tbody">
#<Capybara::Element tag="tr" path="/html/body/div/div[2]/table/tbody/tr[1]">
#<Capybara::Element tag="td" path="/html/body/div/div[2]/table/tbody/tr[1]/td[3]">
#<Capybara::Element tag="tr" path="/html/body/div/div[2]/table/tbody/tr[2]">
#<Capybara::Element tag="td" path="/html/body/div/div[2]/table/tbody/tr[2]/td[3]">
#<Capybara::Element tag="tr" path="/html/body/div/div[2]/table/tbody/tr[3]">
#<Capybara::Element tag="td" path="/html/body/div/div[2]/table/tbody/tr[3]/td[3]">

だから、私はテキストが含まれている要素への道に沿ってステップごとのカウントを取得しています。 : - \

私は多分 has_content を救うだろうと思いました私は、それは、カウントを受け付けません。

ヘルプ!

役に立ちましたか?

解決

このような何かが動作するはずます:

Then /^(?:|I )should see \/([^\/]*)\/ (\d+)(?:x|X| times?)?$/ do |regexp, count|
  regexp = Regexp.new(regexp)
  count = count.to_i
  page.find(:xpath, '//body').text.split(regexp).length.should == count+1
end
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top