Rspec, поддельный класс AR атрибут - PullRequest
0 голосов
/ 15 ноября 2018

Здравствуйте, я пытаюсь проверить метод, который в одном месте вызывает атрибут 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:)

Есть способ проверить это с использованием реального класса, но я не хочу присоединяться к реальному классу при тестировании в случаекогда-нибудь мне нужно будет удалить этот класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...