编辑:根据@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部分,但是仍然出现相同的错误:
失败/错误:it { is_expected.to have_field(:published).of_type(Boolean).with_default_value_of(false) }
预期Post具有名为“published”的Boolean类型字段,其默认值为false,但实际上得到的是类型为Mongoid::Boolean的字段“published”
注意:我也尝试过:
field :published, type: Boolean, default: false
我在我的模型中添加了以下方法:
after_initialize :set_published, :if => :new_record?
那么
private
def set_published
self.published ||= false
end
但是似乎什么都没有起作用,我错过了什么吗?