Tôi là một chút mới đối với Rails và Rspec và vì vậy tôi không chắc chắn làm thế nào để kiểm tra xác nhận ngày tháng đó là chính xác trong mô hình của tôi. Tôi đã thực hiện một sự kiện mô hình có thời gian bắt đầu và kết thúc và có một vài điều kiện quan trọng về thời gian bắt đầu không thể trong quá khứ và thời gian kết thúc phải sau thời gian bắt đầu.Kiểm tra xem mô hình đường ray có xác nhận ngày tháng với RSpec
Để đảm bảo những kiểm chứng thực Tôi đang sử dụng ValidatesTimeliness https://github.com/adzap/validates_timeliness
mô hình của tôi là như sau:
class Event < ActiveRecord::Base
...
validates_datetime :start_date,
:after => :now,
:after_message => "Event cannot start in the past"
validates_datetime :end_date,
:after => :start_date,
:after_message => "End time cannot be before start time"
end
Trong thử nghiệm RSpec của tôi, tôi có:
describe Event do
let(:event) { FactoryGirl.build :event }
subject { event }
context "when start_date is before the current time" do
it {should_not allow_value(1.day.ago).
for(:start_date)}
end
context "when end_date is before or on start date" do
it {should_not allow_value(event.start_date - 1.day).
for(:end_date)}
it {should_not allow_value(event.start_date).
for(:end_date)}
end
context "when the end_date is after the start_date" do
it {should allow_value(event.start_date + 1.day).
for(:end_date)}
end
end
Tuy nhiên điều này không thực sự kiểm tra rằng ngày bắt đầu của tôi phải trước ngày giờ chính xác. Ví dụ: nếu tôi vô tình sử dụng :today
thay vì :now
trong mô hình của tôi, các thử nghiệm này cũng sẽ vượt qua.
Tôi đọc trực tuyến mà trước đây từng là một đối sánh RSpec gọi là validate_date
(http://www.railslodge.com/plugins/1160-validates-timeliness), đó chính xác là những gì tôi đang tìm kiếm nhưng theo như tôi có thể nói nó đã bị xóa.
Câu hỏi của tôi là làm cách nào để cải thiện các bài kiểm tra, tôi cần thêm các bài kiểm tra để thử thời gian nhỏ nhất (ví dụ: mili giây) để đảm bảo đạt được/thất bại hoặc có cách nào tốt hơn không?
Cảm ơn trước!