Özel geçerliliklerim için bir çift sınama gerçekleştirmeye çalışıyorum ve this example numaralı telefona rastladım.Özel geçerlilik denetleyicisi için test oluşturma
Benim doğrulayıcı bu
class FutureValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
if value == nil
record.errors[attribute] << " can't be nil"
elsif value < Time.now
record.errors[attribute] << (options[:message] || "can't be in the past!")
end
end
end
benziyor Ve ben bir kılavuz olarak yukarıda bahsedilen örneği kullanarak bu kadarıyla aldık.
require 'test_helper'
class FutureValidatorable
include ActiveModel::Validations
# validates_with FutureValidator
attr_accessor :future
validates :future, future: true
end
class FutureValidator < ActiveSupport::TestCase
future_value = [nil]
def obj; @obj ||= FutureValidatorable.new; end
test 'future validator returns proper error code when nil is passed to it' do
future_value.each do |value|
@obj.value = value
assert_not obj.valid?
end
end
Bu aşamada aldığım hata iletisini alıyorum şu şekildedir.
rake aborted! TypeError: superclass mismatch for class FutureValidator
Buradan nasıl devam edeceğimi bilmiyorum.
İyi yakalama. Bu cevabı yayınlamadan 5 saniye önce fark ettim. – CheeseFry
Bu konuda nasıl çalışılabilir bir test nasıl alınacağına dair herhangi bir öneriniz var mı? 'NoMethodError: undefined method' value = 'nil için: NilClass' testteki mevcut hata mesajım. – CheeseFry
, 'obj' yönteminin çağrılmadığı gibi görünüyor. Test Örneğinizde 'obj' yerine' obj' kullanın ya da testin 'def setup' yönteminde bildirin. –