2012-07-07 95 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