Я работаю над тестовыми наборами Rails 3.При написании кейса я получил сообщение об ошибке устаревания, например
DEPRECATION WARNING: Errors#on have been deprecated, use Errors#[] instead. Also note that the behaviour of Errors#[] has changed. Errors#[] now always returns an Array. An empty Array is returned when there are no errors on the specified attribute. (called from on at /usr/local/lib/ruby/gems/1.9.1/gems/activemodel-3.0.0.rc/lib/active_model/deprecated_error_methods.rb:7)
. Для этого я использовал ошибки [: field] вместо errors.on (: field).за работой .Это не проверка каких-либо проверок для модели
Sol
Заменить:
errors.on(:field)
с:
errors.include?(:field)
После поиска примеров того, как сделать это, не найдя ничего, я закончил тем, что делал:
errors[:field].present? / errors[:field].blank?
Не знаю, является ли это предпочтительным способом, но похоже, что он делает эту работу.
Я сейчас использую что-то вроде этого:
@hamburger.errors[:ingredients].count.should == 1 @hamburger.errors[:ingredients].should include "Tomatoes are missing dude!"
Надеюсь, это кому-нибудь поможет, сейчас это самое чистое решение для меня.
Я преобразовываю свои старые спецификации в нечто подобное, чтобы убрать предупреждения об устаревании:
model.should have(1).error_on(:field) model.should have(:no).errors_on(:field)