编辑:根据@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
但似乎没有任何效果。我错过了什么?