Если для Rspec, Rails, выводится ошибка, но сама ошибка не выводится - PullRequest
0 голосов
/ 29 августа 2011

Хорошо, я делаю некоторые тесты прямо с Rails + Rspec + Shoulda.

Когда я делаю тест, как показано ниже:

context @user do
  describe 'Validation' do
    describe :name
      it { should allow_value('something').for :name }
    end
  end
end

При сбое Rspec просто выводит:

1) Validation name Valid
   Failure/Error: it { should allow_value(value).for :name }
     Did not expect errors when name is set to "something", got error:
   # ./spec/models/user_spec.rb:4:in `block (3 levels) in <top (required)>'

Он даже говорит got error:, но не выводит его! Я на самом деле знаю, что там есть ошибка проверки, но я хочу, чтобы Rspec сказал мне, как я узнаю, что не удалось проверить?

Что я делаю не так? Это ожидаемое поведение? Я должен переписать помощников?

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Я копался в коде Ifa и обнаружил, что он не показывает ошибки при проверке на положительное утверждение.Но они загружаются в переменную @errors.Так что я просто исправил один метод, который определяет вывод:

module Shoulda
    module ActiveRecord
        module Matchers
            def failure_message
                "Did not expect #{expectation}, got error: \n#{@expected_message ? @matched_error : @errors.join("\n  ")}"
            end
        end
    end
end

Оригинал сказал:

"Did not expect #{expectation}, got error: #{@matched_error}"

Я сохранил его в /lib/shoulda/activerecord/matchers.rb и загрузил его config.autoload_paths += Dir["#{config.root}/lib/**/"]

Надеюсь, это поможет кому-то с такой же проблемой ^^

0 голосов
/ 29 августа 2011

Да, добро пожаловать в тестирование спецификаций, поэтому вам нужно воссоздать ошибку в консоли, если вы хотите ее исправить, rspec - это не отладчик, а просто набор тестов.

Я сталкиваюсь с этим много

...