2011-07-06 61 views
3

我要檢查,如果給定的字符串出現在某些情況下黃瓜+水豚檢查文本出現多次

多次,我發現這個其他地方:

Then /^I should see "([^\"]*)" twice$/ do |text| 
    regexp = Regexp.new(text + "(.+)" + text) 
    response.body.should contain(regexp) 
end 
這對webrat書面

。我試圖與水豚地表達出來:

Then /^I should see "([^"]*)" twice$/ do |text| 
    regexp = Regexp.new(text + "(.+)" + text) 
    if page.respond_to? :should 
    page.should have_xpath('//*', :text => regexp) 
    else 
    assert page.has_xpath?('//*', :text => regexp) 
    end 
end 

這給了我預期的#has_xpath(「// *」)返回true,得到了假

我也試過上述正則表達式的多變種。

回答

3

解決方案我最終使用後,正則表達式搞亂。據我瞭解, 「([^ /] )」,將需要的東西作爲一個正則表達式與 「([^」])」以事爲明文:

Then /^I should see "([^\/]*)" "(.+)" times$/ do |regexp, times| 
    str = regexp 
    for i in times 
    str = str + "(.+)" + regexp 
    end 
    regexp = Regexp.new(str) 
    if page.respond_to? :should 
    page.should have_xpath('//*', :text => regexp) 
    else 
    assert page.has_xpath?('//*', :text => regexp) 
    end 
end