2
試圖爲我的自定義驗證實施一對測試,並且遇到了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
我不知道如何從這裏開始。
好的。我只是注意到你發佈這個答案前5秒。 – CheeseFry
關於如何在這個項目上進行可行的測試的任何建議? 'NoMethodError:未定義的方法'value ='爲零:NilClass'是我當前的測試錯誤信息。 – CheeseFry
看起來像你的'obj'方法沒有被調用。在測試用例中使用'obj'而不是'@ obj',或者在測試的'def setup'方法中聲明它。 –