我有一个带有belongs_to关系的Rails 4应用程序,我试图用shoulda-matcher测试:
模特:
class Foo < ActiveRecord::Base
belongs_to :bar
end
测试:
require 'rails_helper'
Rspec.describe Foo, type: :model do
it { should belong_to :bar }
end
产生以下错误:
NoMethodError:
undefined method `primary_key_name' for #<ActiveRecord::Reflection::BelongsToReflection:0x007fde9b87e368>
Did you mean? primary_key_type
如果我使用丑陋的话:
it { Foo.reflect_on_association(:bar).macro.should eq(:belongs_to) }
测试通过。
我见过this SO和this GitHub issue,但他们引用了不同的匹配器并归咎于我没有安装的validates_existence
gem。
我可以忍受冗长的语法,但任何建议都会非常感激。提前谢谢!
编辑:
看起来我的问题与宝石版本有关。我更改了shoulda和shoulda-matchers的版本,关系匹配器现在可以正常工作。
原始宝石版本:
rails: 4.2.6
shoulda: 2.11.3
shoulda-matchers: 3.1.1
使用gem版本:
shoulda: 3.5.0
shoulda-matchers: 2.8.0