ImageManager.check_enable_time
def check_enable_time
# get current time
now_time = Time.now
# UTC to JST convestion JST = UTC + 9 hours
hour = now_time.in_time_zone("Asia/Tokyo").hour
(hour != 23) ? true : false
结束
如果 JST 中的当前时间 != 23 则此函数返回 true,否则返回 false。
我想测试这个功能。
我尝试了什么:
describe ImageManager do
describe "Test check_enable_time() function" do
context "When current time in JST != 23" do
it 'should return true' do
image_manager = ImageManager.new
result = image_manager.check_enable_time
result.should eql(true)
end
end
end
end
如何使 now_time.in_time_zone("Asia/Tokyo").hour
返回 23 而不是 23?
请帮助我是 rails 和 rspec 的新手。
最佳答案
避免安装另一个 gem 的解决方案是重写您现有的方法,这样它就不会显式依赖 Time.now:
def check_enable_time(now_time = Time.now)
# UTC to JST convestion JST = UTC + 9 hours
hour = now_time.in_time_zone("Asia/Tokyo").hour
(hour != 23) ? true : false
end
然后您可以通过传递适当的时间来测试它:
it 'should return true' do
image_manager = ImageManager.new
time = Time.local(2008, 9, 1, 12, 0, 0)
result = image_manager.check_enable_time(time)
result.should eql(true)
end
关于ruby-on-rails - 规范;如何测试这个功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42339268/