首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSpec attr_readonly

RSpec attr_readonly
EN

Stack Overflow用户
提问于 2015-02-12 23:13:40
回答 1查看 996关注 0票数 0

我有一个名为rfid的只读属性的产品

代码语言:javascript
复制
class Product < ActiveRecord::Base
  attr_readonly :rfid

我有下面的规范来检查它是否是只读的

代码语言:javascript
复制
describe Product do
  before :each do
    @product = FactoryGirl.create(:product)
  end
  it "'s rfid is immutable'" do
    @product.update_attribute(:rfid, 1921)
    @product.valid?
    expect(@product.errors[:rfid]).to include("marked as readonly")
  end

但它失败并返回:

代码语言:javascript
复制
  1) Product 's rfid is immutable'
     Failure/Error: @product.update_attribute(:rfid, 1921)
     ActiveRecord::ActiveRecordError:
       rfid is marked as readonly

我试过用"has already been taken"expect(@product.rfid).to eq(1921)to have(1).errors等方法,但都没有用。

像往常一样,任何帮助都非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-13 00:25:27

尝试更新只读属性将引发ActiveRecord::ActiveRecordError erorr,而不是向模型添加验证错误。您可以通过以下方法测试是否引发错误:

代码语言:javascript
复制
expect {
  @product.update_attribute(:rfid, 1921)
}.to raise_error(ActiveRecord::ActiveRecordError, 'rfid is marked as readonly')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28489688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档