Должен ли validate_format_of. not_with имеет проблему в рамках (или в моем понимании) - PullRequest
6 голосов
/ 09 ноября 2010

Я поместил следующий код в тест RSpec:

it { should validate_format_of(:email).not_with('test@test')}

и установите фактический класс с помощью:

validates :email, :presence => true, :format => /\b[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b/i

И когда я запускаю тесты, я получаю:

Отказы: 1) Пользователь Сбой / Ошибка: он {должен проверить valid_format_of (: электронная почта). Not_with ('test @ test')} Ожидаемые ошибки с включением «не могут быть пустыми», если для электронной почты установлено «test @ test», получены ошибки: [«name не может быть пустым (nil)», «email недействителен (\« test @ test \ » ) "] # ./spec/models/user_spec.rb:8:in `блок (2 уровня) в '

Когда я прохожу тест, как:

it { should validate_format_of(:email).with('adam@trimediatlantic.com')}

Все работает как положено. Может кто-нибудь сказать мне, если я делаю что-то не так или это проблема структуры. Спасибо.

Ответы [ 2 ]

21 голосов
/ 10 ноября 2010

Попробуйте вместо этого:

it { should_not allow_value("test@test").for(:email) }
3 голосов
/ 15 марта 2011

Я только что столкнулся с подобной проблемой Оказывается, вам нужно вызвать метод with_message и предоставить точное сообщение об ошибке в виде строки или регулярное выражение, соответствующее сообщению об ошибке. Это убедит validate_format_of прекратить свою упорную настойчивость в том, что ошибки форматирования приводят к тому, что сообщения «не могут быть пустыми», и фактически проходят. Например:

it { should validate_format_of(:email).not_with('test@test')}

становится

it { should validate_format_of(:email).not_with('test@test').with_message(/invalid/)}

Это похоже на ошибку в библиотеке musta.

...