Yukarıdaki kod, Rubymine'i karıştırdı ... ve aslında doğru olduğundan emin değilim.
def distance_of_time_in_hours_and_minutes(from_time, to_time)
from_time = from_time.to_time if from_time.respond_to?(:to_time)
to_time = to_time.to_time if to_time.respond_to?(:to_time)
dist = to_time - from_time
minutes = (dist.abs/60).round
hours = minutes/60
minutes = minutes - (hours * 60)
words = dist <= 0 ? '' : '-'
words << "#{hours} #{hours > 1 ? 'hours' : 'hour' } and " if hours > 0
words << "#{minutes} #{minutes == 1 ? 'minute' : 'minutes' }"
end
İşte yukarıda bazı RSpec var: Ben aşağıdaki gibi yeniden
describe "Distance of Time in Hours and Minutes" do
before do
@time1 = Time.utc(2010,"sep",7,14,15,3)
@time2 = @time1 + 28
@time3 = @time1 + 30
@time4 = @time1 + 60
@time5 = @time1 + 60*60
@time6 = @time1 + 60*60 + 60
@time7 = @time1 + 60*60 + 5*60
end
it "calculates time differences properly" do
distance_of_time_in_hours_and_minutes(@time1, @time1).should == "0 minutes"
distance_of_time_in_hours_and_minutes(@time1, @time2).should == "0 minutes"
distance_of_time_in_hours_and_minutes(@time1, @time3).should == "1 minute"
distance_of_time_in_hours_and_minutes(@time1, @time4).should == "1 minute"
distance_of_time_in_hours_and_minutes(@time1, @time5).should == "1 hour and 0 minutes"
distance_of_time_in_hours_and_minutes(@time1, @time6).should == "1 hour and 1 minute"
distance_of_time_in_hours_and_minutes(@time1, @time7).should == "1 hour and 5 minutes"
distance_of_time_in_hours_and_minutes(@time7, @time1).should == "-1 hour and 5 minutes"
distance_of_time_in_hours_and_minutes(@time3, @time1).should == "-1 minute"
end
end
(Ben NoMethodError hatayı önlemek için benim kodlama ortamında helper
ile distance_of_time_in_miles
arasında başa getirebilir her çağırmayı vardı unutmayın - bu konuda daha fazla bilgi için örneğin http://old.nabble.com/How-to-spec-a-Rails-helper-method-td20660744.html için bkz
Güncelleme Linki:.. https://github.com/radar/dotiw aslında daha iyi çalışır –