2009-06-17 6 views
1

Je suis avec RailsSpace: Building a Social Networking Website with Ruby on Rails by Michael Hartl. Rails de course v2.3.2.obtenir la méthode pour tester dans les rails

Je suis arrivé au chapitre 5 dans lequel les tests sont introduits. Ce qui suit est censé correspondre au titre des différentes pages à cordes 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 

sur la compilation-je obtenir:

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 this issue et la seule solution proposée est juste réinstaller. Je ne suis pas enthousiasmé par ça. Comme il s'agit d'un livre plus ancien, il s'agit probablement d'une simple rupture entre les versions des rails. Quel serait l'équivalent de cela pour les rails v2.3.2?

Répondre

4

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.

1

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

+0

Vous devriez également pouvoir supprimer la méthode d'installation. – Shadwell

1

Une autre chose que vous aimeriez savoir est que Railspace a évolué en Insoshi afin que le dernier code soit disponible là. Peut être pratique pour vous lorsque vous rencontrez d'autres problèmes.

+0

Merci, c'est bien qu'ils ont encore mis à jour ce genre de choses. – deeb

Questions connexes