测试中的日期时间处理与测试替身使用
1. 日期和时间测试难题
日期和时间逻辑在应用程序中向来以复杂和棘手著称。测试与日历相关的逻辑,如基于时间的报告、自动登出功能以及“1天前”这样的文本显示,常常让人头疼不已。
1.1 问题示例
假设有如下测试代码:
let(:runway) { create(:project, name: "Project Runway", start_date: "2018-01-20") }
let(:greenlight) { create(:project, name: "Project Greenlight", start_date: "2018-02-24") }
let(:gutenberg) { create(:project, name: "Project Gutenberg", start_date: "2018-01-31") }
it "finds recently started projects" do
actual = Project.find_recently_started(6.months)
expect(actual.size).to eq(3)
end
对应的实现代码如下:
def self.find_recently_started(time_span)
old_time = Date.today - time_span
all(conditions: ["start_date > ?", old_ti
超级会员免费看
订阅专栏 解锁全文
12

被折叠的 条评论
为什么被折叠?



