如何单独测试具有多态belongs_to 关联的模型?

Mid*_*ter 5 polymorphic-associations rspec-rails ruby-on-rails-5

首先,我正在使用:

  • 红宝石2.3.1
  • 轨道5
  • rspec-rails 3.5

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

module Geo
  class Location < ApplicationRecord
    belongs_to :locatable, polymorphic: true
  end
end
Run Code Online (Sandbox Code Playgroud)

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

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

Joh*_*ner 8

您可以使用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
Run Code Online (Sandbox Code Playgroud)