Rspec,伪造的类AR属性

时间:2018-11-15 05:37:50

标签: ruby activerecord

你好,我正在尝试测试一种方法,该方法在一个地方调用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:)

有一种使用真实类进行测试的方法,但是我不想在测试中加入真实类,以防万一有一天我需要删除该类。

0 个答案:

没有答案