我正在开发一个项目,该项目要求我更新
ApplicationRecord
的典型功能,以包含验证以检查数据库中包含的每个模型是否具有特定字段。我按以下方式设置:
class MyCustomApplicationRecordClass < ApplicationRecord
self.abstract_class = true
validate :custom_validation
def custom_validation
...
end
end
然后我的模型通过以下方式继承此类:
class MyModel < MyCustomApplicationRecordClass
...
end
虽然验证按预期工作,并且我可以编写测试来确认该功能适用于从
MyCustomApplicationRecordClass
继承的每个类,但我正在努力解决如何编写测试来确认此类的验证行为符合预期。我尝试创建一个“测试”类,但收到一个错误,指出我的测试类与数据库中的表不对应(当然它不对应)。测试此验证是否按预期执行的最佳方法是什么?
这个答案提供了一个选项。如果您创建一个加载抽象类的 TestClass,您可以关闭架构加载,这将抑制错误消息,从而允许您测试抽象类。
class TestClass < MyCustomApplicationRecordClass
def self.load_schema!
@columns_hash = {}
end
end