RSpec: самый простой тест не пройден с ошибкой: ожидаемый блок вернет истинное значение - PullRequest
3 голосов
/ 16 марта 2011

Я тестирую воды с помощью Rails, и я застрял с этим простым тестом:

У меня есть этот код в spec / routing / routing_spec.rb

  require 'spec_helper'

  describe "Accessing the root domain" do
    it "should route to home#index" do
      { :get => '/' }.
        should route_to(:controller => 'home', :action=>'index')
    end 
 end

Это не удаетсясо следующей ошибкой:

 Failure/Error: { :get => '/' }.
       Expected block to return true value.
     # ./spec/routing/routing_spec.rb:7:in `block (3 levels) in <top (required)>'

Что не так в моем коде?

Ответы [ 3 ]

1 голос
/ 28 сентября 2011

Я столкнулся с этим непрозрачным сообщением об ошибке, а также с Rails 3 и Ruby 1.9.2.Причина в моем случае заключалась в том, что я использовал старую версию minitest, которая поставляется с Ruby, и в этой версии метод assert_block (вызывается assert_recognizes в ActionDispatch :: Assertions :: RoutingAssertions) не отображает сообщение об ошибке (как маршрутизацияпараметры не совпадают).Для меня исправлением было добавить мини-тест в мой Gemfile и установить его через упаковщик:

group :test do
  gem "minitest", ">= 2.6.1" # The minitest version that ships with Ruby is old and has bugs
end

Затем я получил бы более понятное сообщение об ошибке:

The recognized options <{"action"=>"index",
"controller"=>"publish/product_versions",
"product_id"=>"ipad_app"}> did not match <{"controller"=>"publish/product_versions",
"action"=>"indexx",
"product_id"=>"ipad_app"}>, difference: <{"action"=>"indexx"}>.
Expected block to return true value.
0 голосов
/ 01 мая 2011

Это случилось со мной, потому что мой контроллер сделал неправильное представление.Я исправил логику метода моего контроллера, и все работало нормально.

0 голосов
/ 09 апреля 2011

Похоже, что это должно работать, так что я думаю, что есть проблема с конфигурацией.Трудно понять, что это такое, не видя больше приложения.Кроме того, ошибка говорит о том, что это происходит в строке 7, но она ссылается на строку 5 в приведенном выше коде, поэтому в файле, который объединяет данные, может быть что-то еще.потому что ожидание написано в две строки.Если бы вы написали это в одной строке, вы бы увидели все утверждение.Не то чтобы это помогло сузить эту проблему, кроме того, чтобы помочь вам понять, что он не пытается рассматривать { :get => '/' } как блок.

HTH, Дэвид

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