1 votes

méthode d'obtention pour les tests dans les rails

Je suis en train de suivre RailsSpace : Construction d'un site de réseau social avec Ruby on Rails par Michael Hartl . Exécution de rails v2.3.2.

Je suis arrivé au 5ème chapitre dans lequel les tests sont introduits. Ce qui suit est censé faire correspondre le titre des différentes pages à des chaînes de caractères en utilisant la méthode 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

En compilant, j'obtiens :

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

D'autres personnes ont eu cette question et la seule solution proposée est de réinstaller. Je ne suis pas très enthousiaste à ce sujet. Comme il s'agit d'un ancien livre, il s'agit probablement d'une rupture entre les versions de rails. Quel serait l'équivalent de ceci pour rails v2.3.2 ?

4voto

Simone Carletti Points 77653

Remplacer tous le code suivant

# 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

avec

class SiteControllerTest < ActionController::TestCase

Le code que vous utilisez fait référence à Rails 2.0/2.1.

1voto

erikostrom Points 181

Essayez de remplacer Test::Unit::TestCase par ActionController::TestCase.

1voto

srboisvert Points 7214

Une autre chose que vous aimeriez peut-être savoir est que Railspace a évolué en Insoshi donc le dernier code est disponible là. Cela pourrait être pratique pour vous si vous rencontrez d'autres problèmes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X