根据年龄或日期写rspec测试

时间:2015-05-05 18:12:43

标签: ruby-on-rails date testing rspec

我有一个方法应该根据age / date_of_birth返回一个成员类别。我想为该方法编写一些测试,因为它是一个重要的方法。

我的问题是我如何测试模型,以便将来不会因为日期不断变化而失败。

我尝试提供伪测试:

IF THE member IS > 18 => OUTPUT: "Adult"  
IF THE member IS < 15 => OUTPUT: "XYZ"

感谢

2 个答案:

答案 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')