2010-11-19 1 views
1

나는 /Interface \d/이 페이지에서 세 번 나옵니다. 하지만 오이에서 카피 바라와 함께 이것을 테스트하는 방법을 모르겠습니다. 여기에 내 첫 시도 :Capybara (또는 Webrat, 아마도)와 Cucumber를 사용하여 단어가 여러 번 나타나는 것을 확인하는 방법은 무엇입니까?

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에 대해 false를 반환합니다.

나는 has_xpathall을 사용하고 있기 때문입니다. 내 시험에서이 퍼팅 :

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이 나를 구할 것이라고 생각했지만 수를 허용하지 않습니다.

도움말! 이 같은

답변

2

뭔가 작동합니다 : 나는 "어쩌구에서"사용하고자하지 않는

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 
+0

두 가지 이유 : 1) 그것은 부서지기 쉬운입니다. 지금은 에 있지만 곧 변경 될 것입니다. 나는 시험을 변경하고 싶지 않다. 2) 사실 사용자의 관점에서 볼 때 오이 기능을 가능한 한 많이 사용하려고하는 것이 아닙니다. – chadoh

+0

공정한만큼 ... 나는 CSS 선택기 제안을 삭제했다. – Zubin

관련 문제