2013-07-30 3 views
0

У меня есть модель пользователя, для которой требуется пароль с хотя бы одной заглавной буквой. Моя спецификация записывается следующим образом:musta matchers with_message ошибка для пользовательской проверки

subject { User.new } 
it { should_not allow_value("test123$").for(:password).with_message("password requires an uppercase letter (\"test123$\")") } 

Однако, эта спецификация возвращает следующий сбой:

Expected errors to include ["password requires an uppercase letter (\"test123$\")"] when password is set to "test123$", got errors: ["password requires an uppercase letter (\"test123$\")"] 

Он смотрит на меня как массив ошибок явно включает в себя правильное сообщение. Что я здесь делаю неправильно?

EDIT: Вот подтверждение, что я пытаюсь спецификации:

[ 
    [/[A-Z]/, "requires an uppercase letter"], 
    [/[a-z]/, "requires a lowercase letter"], 
    [/[0-9]/, "requires a number"], 
    [/[^\w]/, "requires a special character"] 
].each do |(format, message)| 
    validates :password, :format => {:with => format, 
    :message => message}, 
    :allow_blank => true 
end 

ответ

0

Я могу только сделать вывод, что вы выполнение кода, который отличается от того, что вы показали. Ваше сообщение об ошибке RSpec указывает, что вы ожидаете, что массив ошибок включит массив, содержащий указанную строку, вместо того, чтобы ожидать, что он включит сама строка. Может быть, это сообщение об ошибке возникает из-за запуска спецификации с ....with_message(["..."]) вместо того, что вы показали?

Связанный код должен довольно прост. См. Строку 120 из https://github.com/thoughtbot/shoulda-matchers/blob/d680e7d47ba0d0bc6eba888cc4648f65b61ac2cf/lib/shoulda/matchers/active_model/allow_value_matcher.rb

+0

Я добавил код для проверки, ответственный за создание этого сообщения об ошибке. Там что-то напуганное? – user2287662

+0

Вы должны добавить это к своему вопросу как код, чтобы он был читабельным. –

+0

Извините, что это должно быть исправлено. – user2287662

 Смежные вопросы

  • Нет связанных вопросов^_^