У меня есть метод, который выполняет некоторые действия над моделью Cat, а в случае неправильного ввода вызывает исключение:
context "hungry cat" do
it { expect { eat(what: nil) }.to raise_error }
end
Что я хочу сделать, так это проверить, изменил ли этот метод статус кошек, например:
context "hungry cat" do
it { expect { eat(what: nil) }.to raise_error }
it { expect { eat(what: nil) }.not_to change(cat, :status) }
end
Проблема заключается в том, что, поскольку eat(what: nil)
вызовет исключение, второй it
будет терпеть неудачу, несмотря ни на что. Итак, можно ли игнорировать исключение и проверить какое-то условие?
Я знаю, что можно сделать что-то вроде:
it do
expect do
begin
eat(what: nil)
rescue
end
end.not_to change(cat, :status)
end
Но это слишком уродливо.