Rspec: показать ошибки модели, когда она недействительна - PullRequest
4 голосов
/ 28 июля 2011

Я обычно пишу что-то вроде этого в моих тестах Rspec:

user.new(...)
user.should be_valid

Проблема в том, что, когда этот тест не пройден, я не вижу ошибок в пользовательском объекте.Есть ли хороший способ переписать этот тест, чтобы в выводе Rspec я увидел что-то вроде user.errors.inspect?Я пробовал user.errors.should be_empty, но это все еще говорит: "ожидал, правда, стал ложным".

1 Ответ

9 голосов
/ 28 июля 2011

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

RSpec::Matchers.define :be_valid do
  match do |actual|
    actual.valid?
  end

  failure_message_for_should do |actual|
    "expected that #{actual} would be valid (errors: #{actual.errors.full_messages.inspect})"
  end

  failure_message_for_should_not do |actual|
    "expected that #{actual} would not be valid"
  end

  description do
    "be valid"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...