ins*_*ero 6 sql rspec ruby-on-rails mocking
我可以Time.now用很棒的时间警察宝石来嘲笑。
Time.now
=> 2018-05-13 18:04:46 +0300
Timecop.travel(Time.parse('2018.03.12, 12:00'))
Time.now
=> 2018-03-12 12:00:04 +0300
TeacherVacation.first.ends_at
Thu, 15 Mar 2018 12:00:00 MSK +03:00
TeacherVacation.where('ends_at > ?', Time.now).count
1
Run Code Online (Sandbox Code Playgroud)
NOW()但是(显然)这在查询中使用时不起作用:
TeacherVacation.where('ends_at > NOW()').count
0
Run Code Online (Sandbox Code Playgroud)
我可以模拟NOW()以便它在特定时间内返回结果吗?
Asl*_*aev -3
我认为解决这个问题的方法是DI(依赖注入)
def NOW(time = Time.now)
time
end
Run Code Online (Sandbox Code Playgroud)
测试中
current_test = Time.new(2018, 5, 13)
p NOW(current_test)
Run Code Online (Sandbox Code Playgroud)
生产中
p NOW
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2132 次 |
| 最近记录: |