黄瓜日期范围红宝石



我在这里看到了一些关于日期范围的类似问题,但似乎没有一个解决方案对我有用。 我要做的是将日期范围设置为一个月,并确认今天的日期是否在该范围内。 最终,这将被放入一年中每个月的情况方法中,因为我正在测试的功能是特定于日期的。

我尝试将日期转换为整数以使计算更容易(或者我认为如此),然后使用 between? 检查日期范围。

这是我的代码:

today = Time.now.to_i
    month_start = Time.parse('1 Jan 2016').to_i
    month_end = Time.parse('31 Jan 2016').to_i
if today.between?(month_start,month_end)
   #do something
end

当每个变量都有一个放置时,这是输出:

Today = 1468479863
month_start = 1451606400
month_end =  1454198400

如您所见,这应该会失败,因为今天不在日期范围之间,它远远超出了日期范围。然而,测试正在变为绿色,这表明我包含between?方法的if语句不起作用。

有没有一些显而易见的东西,我在这里错过了,因为我看不到它。

该功能中的步骤如下:

Then(/^I can see that all results have a statement due this month$/) do
    today = Time.now.to_i
    month_start = Time.parse('1 Jan 2016').to_i
    month_end = Time.parse('31 Jan 2016').to_i
    results_table = all('table#clickable-rows tbody tr')
    if today.between?(month_start,month_end)
      results_table.each do |row|
        within(row.all('td')[3]) do
          statement_date = find('table#clickable-rows tbody tr td:nth-child(4) > span')
          expect(statement_date).to have_text '1 Aug 2016'
        end
      end
    end
  end

您的测试通过,因为如果today.between?(month_start,month_end)返回 false,则不会运行任何期望!

您可能需要考虑将 if 本身更改为期望:

Then(/^I can see that all results have a statement due this month$/) do
    today = Time.now.to_i
    month_start = Time.parse('1 Jan 2016').to_i
    month_end = Time.parse('31 Jan 2016').to_i
    results_table = all('table#clickable-rows tbody tr')
    expect(today).to be_between(month_start,month_end)
    results_table.each do |row|
      within(row.all('td')[3]) do
        statement_date = find('table#clickable-rows tbody tr td:nth-child(4) > span')
        expect(statement_date).to have_text '1 Aug 2016'
      end
    end
  end

我认为你输入错误:

month_end = Time.parse('1 Jan 2016').to_i

不应该是'31 Jan 2016'吗?

您的整个测试似乎有点混乱 - 我认为从步骤的描述来看,您真正想要的是

Then(/^I can see that all results have a statement due this month$/) do
  expected_date = /A#{Date.today.strftime('1 %b %Y')}Z/  # rexex needed so it doesn't match 11 Jul 2016 or 21 Jul 2016
  results_table = all('table#clickable-rows tbody tr')
  results_table.each do |row|
    expect(row.find('td:nth-child(4)')).to have_text(expected_date)
  end
end

results_table.每个块也可以写成

expect(results_table).to RSpec.all(have_selector('td:nth-child(4)', text: expected_date))

相关内容

  • 没有找到相关文章

最新更新