Trong phương pháp điều khiển, tôi đặt biến của người dùng activation_sent_at
bằng Time.zone.now
khi email kích hoạt được gửi tới người dùng đó. Trên máy chủ phát triển, điều này dường như hoạt động (mặc dù biểu thức thời gian trong ứng dụng của tôi là 2 giờ sau giờ địa phương của máy tính của tôi).Kiểm tra tích hợp TimeWithZone & Time.zone.now không thành công
Tôi muốn bao gồm kiểm tra tích hợp để kiểm tra xem activation_sent_at
có thực sự được đặt chính xác hay không. Vì vậy, tôi bao gồm các dòng:
assert_equal @user.activation_sent_at, Time.zone.now
Tuy nhiên, điều này tạo ra lỗi:
No visible difference in the ActiveSupport::TimeWithZone#inspect output.
You should look at the implementation of #== on ActiveSupport::TimeWithZone or its members.
Tôi nghĩ rằng nó gợi ý để sử dụng biểu khác cho Time.zone.now
trong thử nghiệm của tôi. Tôi đã xem xét các nguồn khác nhau, bao gồm http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html, nhưng tôi không chắc chắn nên làm gì ở đây. Bất kỳ đề xuất nào có thể gây ra lỗi này?
Thông tin bổ sung: Thêm puts Time.zone.now
và puts @stakeholder.activation_sent_at
xác nhận hai bằng nhau. Không chắc chắn những gì tạo ra lỗi/lỗi.
Hài hước, Timecop là vị cứu tinh đầu tiên tôi nghĩ đến khi gặp sự cố này, nhưng nó không giúp ích gì. Buồn cười. – bbozo
Vấn đề là ngay cả khi bạn đóng băng thời gian, nó không giúp đỡ - có lẽ vì một số trôi dạt infinitesimal rằng bất kỳ số học là lúc chơi không thể so sánh đáng tin cậy. Tuy nhiên, khi tôi đặt thời gian cho một thời điểm cụ thể mà tôi chọn với số milisecond được làm tròn, tắt, sau đó nó hoạt động, tức là 'Timecop.freeze' không thành công và 'Timecop.freeze Time.parse (" 2016-09-13 18:26 : 09 +0200 ")' works' – bbozo
Nếu bạn cập nhật câu trả lời, tôi sẽ +1 – bbozo