Trong ứng dụng của tôi, tôi muốn có một mô hình Car
.Trong RSpec - làm thế nào tôi có thể kiểm tra nếu một thuộc tính ít hơn (hoặc nhiều hơn) so với một thuộc tính khác
Nó sẽ có hai trường trong số các trường khác: date_from
và date_till
(để chỉ định khoảng thời gian ai đó đang sử dụng).
Và tôi muốn mô hình xác thực ngày tháng đó phải nhỏ hơn hoặc bằng ngày tháng.
dự thảo model_spec.rb của tôi trông như thế này:
require 'spec_helper'
describe Car do
it {should validate_presence_of(:model)}
it {should validate_presence_of(:made)}
it "should have date_till only if it has date_from"
its "date_till should be >= date_from"
end
Rõ ràng, tôi chỉ có thể viết một "dài" thử nghiệm nơi tôi sẽ cố gắng thiết lập date_till để được lớn hơn date_from - và mô hình chỉ nên không hợp lệ. Nhưng có lẽ có một số cách thanh lịch để làm điều đó?
Vì vậy, làm cách nào tôi có thể (sử dụng đối sánh RSpec) xác thực rằng một trường không lớn hơn trường khác?
UPD: Tôi nhìn câu trả lời @ itsnikolay và mã hóa nó như thế:
it "should not allow date_till less than date_from" do
subject.date_from = Date.today
subject.date_till = Date.today - 1.day
subject.valid?.should be_false
end
Đã phải làm điều đó mà không cần quẹt. Vâng, không phải là một bi kịch :)
mới nếu họ cả được khởi tạo là nil? kiểm tra sẽ vượt qua, nhưng nó bao gồm tất cả các hành vi? –