получить метод для испытаний в рельсах - PullRequest
1 голос
/ 17 июня 2009

Я следую наряду с RailsSpace: Создание сайта социальной сети с Ruby on Rails. Автор Michael Hartl . Ходовые рельсы v2.3.2.

Я попал в 5-ю главу, в которой представлено тестирование. Предполагается, что следующее, чтобы сопоставить заголовок различных страниц со строками, используя метод 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?

Ответы [ 3 ]

4 голосов
/ 17 июня 2009

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

# 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 голос
/ 17 июня 2009

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

1 голос
/ 17 июня 2009

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

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