EDIT: В соответствии с предложением @max, я меняю модель, чтобы использовать enum вместо этого, однако я не могу проверить ее для состояния по умолчанию:Как получить спецификацию теста для модели с типом поля перечисления - Mongoid
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. У меня это в моей спецификации модели:
OLD вопрос - сохранен для справки?
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
Но ничего не работает. Что мне не хватает?
Я обновил свой ответ. – vmarquet
Ответ обновлен. – vmarquet