(다른 것들 중에서) 일부 맞춤형 모델 검사기가 포함 된 레일 젬을 작성하려고합니다 ... 유효성 검사 옵션을 테스트하는 방법이 궁금합니다.레일 사용자 정의 유효성 검사기 : 테스트 옵션
예를 들어, allow_nil 옵션이 true이면 빈 필드가 유효한 값을 반환하는 rspec 테스트를 작성하고 그렇지 않은 경우에는 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 세트를 , 그리고 그것의 기능을 확인하십시오 ... 둘 다 과도하고 꽤 비열한 것 같습니다. 좀 더 우아한 방법이 있어야합니다.
validate_prime_spec.rb에
require path_to_validator_file
describe ActiveModel::Validations::ThirstyVals::ValidatePrime do
context :validate_each do
it 'should do some stuff' do
subject.validate_each(record, attr_name, value).should #some expectation
end
end
end
그때 난 당신이 테스트를 할 필요가 있음을 제안 할 수 있습니다 : (후세 아래 다른 검사)
# ...
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