【发布时间】:2015-07-08 16:32:00
【问题描述】:
编辑:根据@max 的建议,我将模型更改为使用枚举,但是我无法测试它的默认状态:
it { is_expected.to validate_inclusion_of(:status).to_allow("draft", "published") }
在模型中使用以下代码可以正常工作:
validates :status, :inclusion => { :in => ["draft", "published"] }
但这部分还是失败了:
it { is_expected.to have_field(:status).with_default_value_of("draft") }
请注意,我使用的是 Mongoid。我的模型规范中有这个:
老问题 - 留作参考?
it { is_expected.to have_field(:published).of_type(Boolean).with_default_value_of(false) }
在我的模型中,我有这个:
field :published, type: Mongoid::Boolean, default: false
还不行。我试过删除 Mongoid 位但得到同样的错误:
Failure/Error: it { is_expected.to have_field(:published).of_type(Boolean).with_default_value_of(false) }
Expected Post to have field named "published" of type Boolean with default value of false, got field "published" of type Mongoid::Boolean
注意:我也试过了:
field :published, type: Boolean, default: false
并在我的模型中添加了以下方法:
after_initialize :set_published, :if => :new_record?
然后
private
def set_published
self.published ||= false
end
但似乎没有任何效果。我错过了什么?
【问题讨论】:
-
我已经更新了我的答案。
标签: ruby-on-rails ruby-on-rails-4 rspec3 mongoid4