Capybara和jQuery datepicker:Capybara认为日历上的某些日期是可点击的(有效日期)

时间:2013-07-30 19:27:23

标签: ruby-on-rails-3 capybara rspec2 jquery-ui-datepicker

我正在测试我正在测试我的网站为datepicker显示的可用日期。 datepicker应该可以使下一个X工作日可用,并忽略周末和假日。

我正在测试两个场景,1个用于查看下订单的人(7月1日)的接送日期,并选择接听,接下来的5个工作日(7月2日,3日,5日,8日和9日)可用。我使用以下rspec / capybara代码对其进行了强力测试,它没有任何问题:

find("#datepicker_").click

find(".ui-datepicker-group-first").should_not have_link("1")
find(".ui-datepicker-group-first").should have_link("2") 
find(".ui-datepicker-group-first").should have_link("3")
find(".ui-datepicker-group-first").should_not have_link("4")
find(".ui-datepicker-group-first").should have_link("5")
find(".ui-datepicker-group-first").should_not have_link("6")
find(".ui-datepicker-group-first").should_not have_link("7")
find(".ui-datepicker-group-first").should have_link("8")
find(".ui-datepicker-group-first").should have_link("9")
find(".ui-datepicker-group-first").should_not have_link("10")

下一个测试涉及运送物品而不是提货,因此在5天的运输时间内,可用日期应为第3,第5,第8,第9,第10,第11,第12,第15和第16。但是,我的测试(与上面相同,但查看2到17日之间的范围)是失败的,即使datepicker只显示我期望的正确日期。出于某种原因,它说第二和第六有链接(即可选日期),但他们显然没有。下面是错误的一个例子:

Failures:

  1) cart functionality should make the right delivery dates available in the cart
     Failure/Error: find(".ui-datepicker-group-first").should_not have_link("2")
       expected #has_link?("2") to return false, got true
     # ./cart_functionality_spec.rb:100:in `block (2 levels) in <top (required)>

我在测试期间截取了浏览器的样子,当时我用Pry冻结了测试,然后用rpsec进行了检查。屏幕截图可以在下面看到

Screenshot of datepicker available dates

奇怪的是,7月4日,其他周末,如7月7日和7月17日,不会触发此错误。如果我评论第2和第6的测试,测试通过。有谁知道为什么会这样?

我正在与: Capybara 2.1, Rspec-rails 2.14.0

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。由于第二个不是链接,第12个是链接,当我使用代码

find(".ui-datepicker-group-first").should_not have_link("2")

检测到日期“12”的链接。同样的情况发生在6日和16日。我把测试改为:

find(".ui-datepicker-group-first").should_not have_link(/^(2)$/)

并解决了这个问题。