【问题标题】:How do I test a model with a polymorphic belongs_to association in isolation?如何单独测试具有多态 belongs_to 关联的模型?
【发布时间】:2025-11-28 23:50:02
【问题描述】:

预先,我正在使用:

  • Ruby 2.3.1
  • 导轨 5
  • rspec-rails 3.5

我已经设置了一个可挂载的 Rails 引擎,它带有我想在其他引擎中使用的多态模型。模型类如下所示:

module Geo
  class Location < ApplicationRecord
    belongs_to :locatable, polymorphic: true
  end
end

在我的规范中,我想确保我有一个有效的模型,但是,在引擎中我没有与 Geo::Location 关联的其他模型。

如何设置一个虚拟类来测试有效性(belongs_to 要求存在)或者您使用过哪些好的测试策略?

【问题讨论】:

    标签: rspec-rails ruby-on-rails-5 polymorphic-associations


    【解决方案1】:

    您可以使用Shoulda gem,它是belong_to 匹配器(https://github.com/thoughtbot/shoulda-matchers#activerecord-matchers)。比如:

    it "has a polymorphic relationship" do
      expect(subject).to belong_to(:locatable)
    end
    

    【讨论】: