Làm cách nào để viết thông số kỹ thuật của mình mà không sử dụng phương thức ngủ (1. giây)? Khi tôi loại bỏ giấc ngủ sau đó các bài kiểm tra của tôi bị phá vỡ bởi vì họ đang trở về cùng một dấu thời gian?Làm thế nào tôi nên rspec/kiểm tra một lĩnh vực updated_at mà không cần sử dụng sleep() trong ruby?
tôi có phương pháp lớp sau đây:
def skip
qs = find_or_create_by(user_id: user_id)
qs.set_updated_at
qs.n_skip += 1
qs.save!
end
và sau spec:
qs = skip(user.id)
sleep(1.second)
qs2 = skip(user.id)
qs.should_not be_nil
qs2.should_not be_nil
(qs.updated_at < qs2.updated_at).should be_true
gì phương pháp set_updated_at bạn làm gì? Tôi không nghĩ rằng bạn đang thực sự thử nghiệm phương thức bỏ qua theo cách đó, để kiểm tra phương thức bỏ qua bạn phải xác minh rằng phương thức bỏ qua: 1: gọi find_or_create_by với dữ liệu đã cho, 2: cuộc gọi set_updated_at trên đối tượng, 3: increments n_skip 1 và 4: lưu đối tượng qs. Những gì bạn đang thử bây giờ là set_updated_at đặt đúng dấu thời gian updated_at trong thử nghiệm của phương thức khác – arieljuod