2010-11-30 20 views
1

Je suis en train d'imiter quelque chose de similaire à http://relishapp.com/rspec/rspec-rails/v/2-2/dir/routing-specs/access-to-named-routes-in-routing-specsRSpec comprend l'aide nécessaire

J'ai un passage de test unitaire:

require 'test_helper' 

    class RoutesTest < ActionController::TestCase 
     test "book name is sent to store#index' do 
     assert_routing 'book/mytitle', {:controller => 'book', :action => 'index', :title => 'mytitle'} 
     end  
    end 

Je suis en train de convertir ce à un test RSpec (course Rspec 2.2 sous Rails3.0.3)

est ici le test:

require 'spec_helper' 
    include RSpec::Rails::Matchers::RoutingMatchers 
    include ActionDispatch::Assertions::RoutingAssertions 

    describe "book specific routes" do 
     it "should recognize title in path" do 
     {:get => "book/mytitle"}.should route_to(:controller => "book", :action => "index", :title => "mytitle") 
     end 
    end 

Mais cela se traduit par:

Failures: 

    1) book specific routes should recognize title in path 
    Failure/Error: {:get => "book/mytitle"}.should route_to(:controller => "book", :action => "index", :title => "mytitle") 
    undefined method `recognize_path' for nil:NilClass 
    # ./spec/route_spec.rb:9:in `block (2 levels) in <top (required)>' 

Une idée d'où vient la nilClass? Toute aide serait appréciée.

Répondre

2

Il est double comprennent des ActionDispatch::Assertions::RoutingAssertions qui provoque l'échec - ne sais pas pourquoi. Supprimez les deux instructions include et tout devrait bien se passer. Le fichier de spécifications devrait être en /spec/routing. Vous pouvez envelopper l'exemple avec describe BooksController pour les points de style, mais cela fonctionnera sans cela.

1

Je suppose que les coupleurs doivent être utilisés dans une spécification de contrôleur. Ils devraient déjà être là, il n'y aurait donc pas besoin de les inclure manuellement. Assurez-vous simplement que vous décrivez un contrôleur.

describe BooksController do 
    it "should recognize title in path" do 
    # ... 
    end 
end