【问题标题】:Rspec test belongs_to with shoulda_matchers使用 shoulda_matchers 进行 Rspec 测试 belongs_to
【发布时间】:2017-07-22 04:23:12
【问题描述】:

我的模型中有这段代码。

belongs_to :user, -> { includes :user_profile }

我通过shoulda doc 没有找到任何方法来测试proc 包含includes 部分。请帮忙。

【问题讨论】:

  • 没有任何内置的 AFAIK

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


【解决方案1】:

假设有问题的模型被命名为Car(你还没有发布封闭类的名称,所以我完全是在编造这个)你可以测试它:

describe 'user' do
  let(:car) { create_car_somehow }

  it 'preloads the user_profile association' do
    expect(car.user.association(:user_profile)).to be_loaded
  end
end

#association 返回指定关联的元数据(ActiveRecord::Associations::BelongsToAssociation 类型等)。返回的对象响应#loaded?,如果关联已加载则返回true,否则返回false。

【讨论】:

  • be_loaded 在哪里定义?您可以发布文档链接吗?
  • 这是动态定义的动态predicate matcher。基本上,expect(object).to be_foo 会自动转换为expect(object.foo?).to be_truthy。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多