rails 3 test case error.on (: field) Vs.Ошибки [: поле] - PullRequest
3 голосов
/ 23 октября 2010

Я работаю над тестовыми наборами 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

Ответы [ 4 ]

9 голосов
/ 03 января 2012

Заменить:

errors.on(:field)

с:

errors.include?(:field)
7 голосов
/ 14 декабря 2010

После поиска примеров того, как сделать это, не найдя ничего, я закончил тем, что делал:

errors[:field].present? /  errors[:field].blank?

Не знаю, является ли это предпочтительным способом, но похоже, что он делает эту работу.

4 голосов
/ 29 марта 2011

Я сейчас использую что-то вроде этого:

@hamburger.errors[:ingredients].count.should == 1
@hamburger.errors[:ingredients].should include "Tomatoes are missing dude!"

Надеюсь, это кому-нибудь поможет, сейчас это самое чистое решение для меня.

2 голосов
/ 13 февраля 2011

Я преобразовываю свои старые спецификации в нечто подобное, чтобы убрать предупреждения об устаревании:

  model.should have(1).error_on(:field)
  model.should have(:no).errors_on(:field)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...