У меня есть Rails 4 приложение с TravelNotes. Путевые заметки имеют 3 вида статусов: черновик, опубликованный, заархивированный. Если статус черновик, его можно удалить иначе.RSpec для ActiveRecord :: RecordNotDestroyed
В TravelNote-модели:
before_destroy :check_for_draft
def check_for_draft
if status == 'draft'
delete
else
errors.add(:scope, 'Only drafts can be deleted')
return false
end
end
И я использую RSpec для тестирования:
it "should delete a travel note if its status is draft" do
expect{ draft.destroy! }.to change{ TravelNote.count }.by(-1)
end
it "should not delete a travel note if its status is published or archived" do
expect{ published.destroy! }.to_not change{ TravelNote.count }
Когда я запустить тест на черновом удаление испытательных проходов, но для опубликованного-удаляемого-теста я получаю:
Failures:
1) TravelNote delete should not delete a travel note if its status is published or archived
Failure/Error: expect{ published.destroy! }.to_not change{ TravelNote.count }
ActiveRecord::RecordNotDestroyed:
ActiveRecord::RecordNotDestroyed
Очевидно, что код работает и только примечания к путешествиям с другими статусами, быть удалена.
Как я могу отключить ActiveRecord-сообщение об ошибке: RecordNotDestroyed до зеленого?
Спасибо, Фелипе, ваш подход работает. Но после удаления взрыва в уничтожении! тест проходит тоже. Я не уверен, что это rspec-способ проверки, но я придерживаюсь «to_not change». – StandardNerd