получить метод тестирования в рельсах

Я следую за RailsSpace: создание сайта социальной сети с Ruby on Rails Майклом Хартлом . Запуск рельсов v2.3.2.

Я попал в пятую главу, в которой вводится тестирование. Следующее должно соответствовать заголовку различных страниц в строках с использованием метода get:

require File.dirname(__FILE__) + '/../test_helper' 
require 'site_controller' 

    # Re-raise errors caught by the controller. 
    class SiteController; def rescue_action(e) raise e end; end 

    class SiteControllerTest < Test::Unit::TestCase 
      def setup 
        @controller = SiteController.new 
        @request     = ActionController::TestRequest.new 
        @response   = ActionController::TestResponse.new 
      end 

      def test_index 
        get :index
        title = assigns(:title) 
        assert_equal "Welcome to RailsSpace!", title 
        assert_response :success 
        assert_template "index" 
        end 

      def test_about 
        get :title
        title = assigns(:title) 
        assert_equal "About RailsSpace", title 
        assert_response :success 
        assert_template "about" 
      end 

      def test_help 
        get :help
        title = assigns(:title) 
        assert_equal "RailsSpace Help", title 
        assert_response :success 
        assert_template "help" 
      end 
    end 

При компиляции я получаю:

Loaded suite site_controller_test
Started
EEE
Finished in 0.057 seconds.

  1) Error:
test_about(SiteControllerTest):
NoMethodError: undefined method `get' for #<SiteControllerTest:0x4854b30>
    site_controller_test.rb:23:in `test_about'

  2) Error:
test_help(SiteControllerTest):
NoMethodError: undefined method `get' for #<SiteControllerTest:0x4854b1c>
    site_controller_test.rb:31:in `test_help'

  3) Error:
test_index(SiteControllerTest):
NoMethodError: undefined method `get' for #<SiteControllerTest:0x485470c>
    site_controller_test.rb:15:in `test_index'

3 tests, 0 assertions, 0 failures, 3 errors

У других людей была эта проблема, и единственное предлагаемое решение - это просто переустановить. Я не хочу этому восхищаться. Поскольку это более старая книга, это, вероятно, просто поломка между версиями рельсов. Что было бы эквивалентно этому для rails v2.3.2?

ruby-on-rails,testing,

1

Ответов: 3


4 принят

Заменить весь следующий код

# Re-raise errors caught by the controller. 
class SiteController; def rescue_action(e) raise e end; end 

class SiteControllerTest < Test::Unit::TestCase 
  def setup 
    @controller = SiteController.new 
    @request     = ActionController::TestRequest.new 
    @response   = ActionController::TestResponse.new 
  end

с

class SiteControllerTest < ActionController::TestCase

Используемый вами код относится к Rails 2.0 / 2.1.


1

Попробуйте изменить Test :: Unit :: TestCase на ActionController :: TestCase.


1

Еще одна вещь, которую вы, возможно, хотели бы знать, - это то, что Railspace превратилась в Insoshi, так что там доступен последний код. Возможно, вам будет удобно, когда вы столкнетесь с другими проблемами.

рубин-на-рельсы, тестирование,
Похожие вопросы