你好,我正在尝试测试一种方法,该方法在一个地方调用activerecord属性,但是在测试中,我创建了一个伪类来对其进行测试,并且没有该测试类的表,所以我如何才能给该类伪造一个表表还是smthng?
试图定义加载模式,但这没有用:
class TestClassStatus < FrozenRecord::Base
end
class TestClass < ApplicationRecord
def self.load_schema!
@columns_hash={"test_class_status_id" => {@name=>'test_class_status_id', @table_name=>'TestClassStatus', @sql_type_metadata=>{ @sql_type=>'character varying', @type=>:string, @limit=>nil, @precision=>nil, @scale=>nil }, @null=>false, @default=>'', @default_function=>nil, @collation=>nil, @comment=>nil, @max_identifier_length=>63}}
end
has_status
end
在这里,我有TestClassStatus
,其中yml文件中的状态通过冻结记录加载,而TestClass
是一个类,其中我使用了我想测试的方法has_status
。该方法正在尝试在test_class_status_id
中找到TestClass
。但不幸的是,我没有该假TestClass
的桌子。因此,有什么建议如何为该TestClass制作一个假表以运行此规范? :)
预先谢谢你!
这是它破裂的一部分
name = status_name ? status_name.to_s : "#{self.to_s}Status"
klass = name.camelize.constantize
include Module.new {
class_eval %Q{
def #{association_name}
#{klass}.find(self[:#{name.underscore}])
end
}
}
它会在试图找到该属性的地方刹车。在我的情况下,klass将为TestClassStatus
,名称将为test_class_status
,因此在该行中,它试图接收test_class_status
中的TestClass
属性,但很遗憾,您可以看到我的{{ 1}}没有表格。所以我需要某种方法来伪造表,因为此方法命中了activerecord:)
有一种使用真实类进行测试的方法,但是我不想在测试中加入真实类,以防万一有一天我需要删除该类。