私のアプリでは、Car
モデルが必要です。RSpec - 1つの属性が別の属性よりも少ないかどうかをテストするには
date_from
とdate_till
の2つのフィールドがあります(誰かがそれを使用していた時間を指定するため)。
そして、モデルでdate_fromがdate_tillよりも小さいか等しいかどうかを検証するようにします。
マイmodel_spec.rb草案は次のようになります。
明らか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
、私はちょうど私がDATE_FROMよりも大きくなるようにdate_till設定しようとする「ロング」のテストを書くことができる - とモデルだけでなければなりません無効。しかし、多分それを行うためのエレガントな方法がありますか?
RSpecマッチャーを使用して、1つのフィールドが別のフィールドよりも大きくないことをどのように検証できますか?
UPD: 私は@ itsnikolayの答えを見て、そのようにコード化された:
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
はマッチャーせずにそれをしなければなりませんでした。まあ、それは悲劇:)
どちらかのnilとして初期化されますか?テストは合格しますが、すべての動作をカバーしていますか? –