【问题标题】:rspec shoulda matchers is expected to belong to polymorphicrspec 应该匹配器应该属于多态
【发布时间】:2021-09-29 16:54:39
【问题描述】:

我正在尝试测试我的多态关联,但我似乎无法让它通过

型号:

class Foo < ApplicationRecord
  belongs_to :bar, polymorphic: true, optional: true
end

现在我的测试看起来像

RSpec.describe Foo, type: :model do
  subject { build(:foo) }
  it { is_expected.to belong_to(:bar) }
end

我遇到的错误

富 预计属于 bar required: true (FAILED - 1)

失败:

  1. Foo 应该属于 bar 要求:true 失败/错误:它 { is_expected.to belongs_to(:bar) } 预期 Foo 有一个名为 bar 的 belongs_to 关联(如果 :bar 未设置,则记录验证失败;即,要么 关联应该用required: true 定义,或者有 应该是 :bar 上的存在验证) /# ./spec/models/foo_spec.rb:4:in `block (2 levels) in '

现在这个关联可以是零值

【问题讨论】:

    标签: ruby-on-rails rspec shoulda-matchers


    【解决方案1】:

    问题似乎是:

    如果 :bar 未设置,则记录验证失败;

    既然你有optional: true - 这部分不满意。

    看起来应该假设一个关系应该是必需的,除非你另有说明。

    尝试像这样修改这个匹配器

    it { is_expected.to belong_to(:bar).optional }
    

    https://github.com/thoughtbot/shoulda-matchers/blob/master/lib/shoulda/matchers/active_record/association_matcher.rb#L304:L321

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多