Rspec: 如何针对一年中的每一天有效地测试一个方法?

Rspec: How to test efficiently a method for each day of the year?

我目前正在 rails 项目的 ruby 中使用 rspec 来测试模型中的方法。

在我的例子中,我有一个 #set_season 方法,它 return 是基于 current_date 的季节。所以我希望这个方法永远不会 return nil.

我的测试通过得很好,但这似乎是一种非常丑陋的方法。我只是暂时看不到任何其他解决方案。但我正在努力提高我的测试技能和我正在测试的代码库的性能。所以欢迎你们的任何帮助

    describe '#set_season' do
      it 'is never nil' do
        (1..12).each do |month|
          (1..31).each do |day|
            promotion.update(start_date: Time.new(2021, month, day))
            promotion.set_season
            expect(promotion.season).not_to be_nil
          end
        end
      end
    end

谢谢!

为了结束这个话题,我决定在一年中的每一天继续测试我的方法,并按照建议用 (Date.today..Date.today + 1.year) 改进我的循环。

describe '#set_season' do
  it 'is never nil' do
    (Date.today..Date.today + 1.year).each do |date|
      promotion.update(start_date: date)
      promotion.set_season
      expect(promotion.season).not_to be_nil
     end
  end
end