尝试为我的自定义验证实施一些测试,我遇到了this example。
我的验证器看起来像这样
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
我使用上面提到的例子作为指导,已经达到了这个目的。
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
在此阶段,我收到的错误消息如下:
耙子流产了! TypeError:类FutureValidator的超类不匹配
我不确定如何从这里开始。
答案 0 :(得分:3)
看起来您的模型和TestCase具有相同的类名。更改测试名称应解决问题。