Я тестирую свои модели ActiveRecord с помощью Rspec. Я только что добавил пользовательское сообщение об ошибке в одну из моих валидаций, вот так:
validates :accepted_terms_at, :presence => {:message => 'You must accept the Terms and Conditions to use this site.'}
Теперь следующий тест провалился:
it { should validate_presence_of(:accepted_terms_at) }
... с ошибкой Ожидаемые ошибки включают "can't be blank", когда accepted_terms_at установлен в nil
.
Таким образом, тест проваливается, потому что он просматривает сообщения об ошибках валидации и ожидает найти стандартное сообщение.
Как я могу сказать Rspec, каким должно быть новое сообщение валидации?
1) Сообщение как аргумент:
it {should validate_presence_of(:accepted_terms_at, :message => 'your message')}
Это дает ошибку неверное количество аргументов (2 для 1)
2) Сообщение как вызов цепочки методов
it {should validate_presence_of(:accepted_terms_at). with('your message')}
Это приводит к ошибке, потому что нет метода with
.