【发布时间】:2015-07-28 19:31:09
【问题描述】:
我想测试对以下类的属性进行的验证:
class R
include ActiveModel::Validations
attr_reader :attribute
validates :attributes, presence: true
def initialize(attribute = {})
@attribute = attribute
end
end
现在我的测试是这样的:
RSpec.describe R, type: :model do
context 'validations' do
subject { R.new(1) }
it { should validate_presence_of(:attribute) }
end
end
但这会导致错误:
NoMethodError:
undefined method `attributes=' for
如果我将 attr_reader 更改为 attr_accessor,则测试通过。
我怎样才能让 attr_reader 保持原样,并且仍然通过 Shoulda 匹配器的测试通过?
【问题讨论】:
标签: ruby-on-rails ruby rspec shoulda