我有一个方法应该根据age / date_of_birth返回一个成员类别。我想为该方法编写一些测试,因为它是一个重要的方法。
我的问题是我如何测试模型,以便将来不会因为日期不断变化而失败。
我尝试提供伪测试:
IF THE member IS > 18 => OUTPUT: "Adult"
IF THE member IS < 15 => OUTPUT: "XYZ"
感谢
答案 0 :(得分:4)
使用timecop gem冻结规范中的时间或从Rails 4.2中冻结TimeHelpers以获取相同的内容(请参阅travel
方法)。
答案 1 :(得分:1)
你甚至需要操纵时间吗?你可以简单地将成员的出生日期设置为过去
# build member
let(:adult_member) { Member.new(date_of_birth: 20.years.ago) }
let(:young_member) { Member.new(date_of_birth: 13.years.ago) }
# spec
expect(adult_member.whatever).to eq('Adult')
expect(young_member.whatever).to eq('Young')