ruby-on-rails - 为自定义验证器创建测试

标签 ruby-on-rails ruby validation unit-testing minitest

尝试为我的自定义验证实现一些测试,我遇到了 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

在此阶段,我收到的错误消息如下。

rake aborted! TypeError: superclass mismatch for class FutureValidator

我不知道如何从这里继续。

最佳答案

看起来您的模型和 TestCase 具有相同的类名。更改测试的名称应该可以解决问题。

关于ruby-on-rails - 为自定义验证器创建测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36507829/

相关文章:

ruby-on-rails - 如何通过 Heroku 在不同的数据库服务器上运行迁移?

javascript - Blur 上的个人输入验证

ruby-on-rails - mac os - Gem 在下载 Rails Errno::ECONNRESET 时提供连接重置:连接由对等方重置 - SSL_connect

ruby-on-rails - 运行单个 cucumber 功能不会加载步骤定义

Ruby:重构包含正则表达式的条件语句

ruby - 为什么我的 rust 程序比 ruby​​ 程序慢?

ruby-on-rails - rails : When to use many to many assocations?

javascript - 如何触发绝对位置验证引擎功能来验证按钮单击时的字段?

validation - CakePHP 3 ownToMany 验证

ruby-on-rails - Mongoid 更新查询将其他属性设置为 nil?