Здравствуйте, я пытаюсь проверить метод, который в одном месте вызывает атрибут activerecord, но, тем не менее, в тесте я создал поддельный класс, чтобы проверить его, и у меня нет таблицы для этого тестового класса, так как я мог бы дать этому классу фальшивыйtable или 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
, а name будет test_class_status
, поэтому в этой строке он пытается получить атрибут test_class_status
в TestClass
, но, к сожалению, как вы можете видеть, у моего TestClass
нет таблицы.Поэтому мне нужно каким-то образом подделать таблицу, потому что этот метод обращается к activerecord:)
Есть способ проверить это с использованием реального класса, но я не хочу присоединяться к реальному классу при тестировании в случаекогда-нибудь мне нужно будет удалить этот класс.