私はいくつかのカスタムモデルバリデータを含むレール宝石を書きたいと思っています...そして、私はバリデーションオプションをテストする方法が不思議です。Railsカスタムバリデータ:テストオプション
たとえば、allow_nilオプションがtrueの場合は空白フィールドが有効を返すrspecテストを作成し、そうでない場合は無効にします。コードは正常に動作しますが、私はそれをテストする上品な方法を考えることはできません。コード自体:
Module ActiveModel
module Validations
module ThirstyVals
class ValidatePrime < EachValidator
# Validate prime numbers
def validate_each(record, attr_name, value)
return if options[:allow_nil] && value.strip.length == 0
# Other validation code here
# ...
end
end
end
end
end
私は現在、結構ですダミーのプロジェクトを通じてテストだけど、私は考えることができる唯一の方法は、テストする:allow_nilオプションがして、新しい属性を作成することです:allow_nilセットを、そしてその機能性を確認してください...どちらも過度であり、かなりエレガントではないようです。より優雅なやり方が必要です。 (後世のために、以下の他の検査)
# ...
before(:each) do
@entry = Entry.new
end
describe "it should accept valid prime numbers" do
['7', '13', '29'].each do |n|
@entry.ticket = n
@entry.valid?('ticket').should be_true
end
end
describe "it should reject non-prime numbers" do
['4', '16', '33'].each do |n|
@entry.ticket = n
@entry.valid?('ticket').should be_false
end
end