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
我目前正在 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