2012-07-07 50 views
4

我正在測試一個Rails 3.2.6應用程序。我可以使用水豚/ rspec來匹配範圍嗎?

是否有可能使一個RSpec /水豚斷言表示,如:

「如果我要爲電影1970年和1990年之間,該頁面應該包含那些日期之間的電影:」

對於示例

it "should show films in the the chosen date range" do 
    page.should have_selector '.year', # then something like text: range(1970..1990) 
end 

而且相反地,我可以檢查'.year'元素是否包含不在該範圍內的日期?

感謝您的任何幫助。

回答

8

傳遞一個塊have_selector沒有工作,但within做的:

within('.year') do 
    text.to_i.should be_between(1970, 1990) 
end 
+0

它很好用。還有另一種選擇:[1970,1990]。應該覆蓋(1980)。 但你的更好。 – 2012-11-14 13:25:03

1

嘗試類似:

page.should have_selector('.year') do |year| 
    range(1970..1990).should include(year.text.to_i) 
end 
1

在我看來,target.should be_between(x, y) rspec的語法更具可讀性:

page.should have_selector('.year') do |year| 
    i_year = year.text.to_i 
    i_year.should be_between(1970, 1990) 
end 
+0

謝謝。這沒有奏效,但讓我走上正軌。 – djb 2012-07-08 09:03:20