Ruby on Rails - 为抽象类编写 Rspec 测试

问题描述 投票:0回答:1

我正在开发一个项目,该项目要求我更新

ApplicationRecord
的典型功能,以包含验证以检查数据库中包含的每个模型是否具有特定字段。我按以下方式设置:

class MyCustomApplicationRecordClass < ApplicationRecord
    self.abstract_class = true
    validate :custom_validation


    def custom_validation
        ...
    end
end

然后我的模型通过以下方式继承此类:

class MyModel < MyCustomApplicationRecordClass
...
end

虽然验证按预期工作,并且我可以编写测试来确认该功能适用于从

MyCustomApplicationRecordClass
继承的每个类,但我正在努力解决如何编写测试来确认此类的验证行为符合预期。我尝试创建一个“测试”类,但收到一个错误,指出我的测试类与数据库中的表不对应(当然它不对应)。测试此验证是否按预期执行的最佳方法是什么?

ruby-on-rails ruby inheritance activerecord
1个回答
0
投票

这个答案提供了一个选项。如果您创建一个加载抽象类的 TestClass,您可以关闭架构加载,这将抑制错误消息,从而允许您测试抽象类。

class TestClass < MyCustomApplicationRecordClass
    def self.load_schema!
         @columns_hash = {}
    end
end
© www.soinside.com 2019 - 2024. All rights reserved.