2010-06-06 4 views
12

Schienen erscheinen zu nicht werden geladen irgendwelche Vorrichtungen für Einheits- oder Funktionstests. Ich habe eine einfache ‚products.yml‘, die analysiert und erscheint richtig:Schienentestgehäuse-Vorrichtungen werden nicht geladen

ruby: 
    title: Programming Ruby 1.9 
    description: 
    Ruby is the fastest growing and most exciting dynamic 
    language out there. If you need to get working programs 
    delivered fast, you should add Ruby to your toolbox. 
    price: 49.50 
    image_url: ruby.png 

Mein Controller Funktionstest beginnt mit:

require 'test_helper' 

class ProductsControllerTest < ActionController::TestCase 
    fixtures :products 

    setup do 
    @product = products(:one)  
    @update = { 
     :title => 'Lorem Ipsum' , 
     :description => 'Wibbles are fun!' , 
     :image_url => 'lorem.jpg' , 
     :price => 19.95 
    } 
    end 

Nach dem Buch, Rails sollte „magische Weise“ die Geräte geladen werden (., wie mein test_helper.rbfixtures :all in ihm habe ich auch noch die explizite Befestigungen Last (oben gesehen) Ja Rails beschwert.

user @ host ~/Dropbox/Rails/depot > rake test:functionals 
(in /Somewhere/Users/user/Dropbox/Rails/depot) 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -Ilib:test "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/functional/products_controller_test.rb" 
Loaded suite /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader 
Started 
EEEEEEE 
Finished in 0.062506 seconds. 

    1) Error: 
test_should_create_product(ProductsControllerTest): 
NoMethodError: undefined method `products' for ProductsControllerTest:Class 
    /test/functional/products_controller_test.rb:7 

    2) Error: 
test_should_destroy_product(ProductsControllerTest): 
NoMethodError: undefined method `products' for ProductsControllerTest:Class 
    /test/functional/products_controller_test.rb:7 
... 

ich über die anderen Rails gekommen Test Fixture Frage Rails unit testing doesn't load fixtures, aber das führt zu einem Plugin-Problem (etwas mit der Reihenfolge der Ladevorrichtungen zu tun).

BTW, ich entwickle auf Mac OS X 10.6 mit Rail 2.3.5 und Ruby 1.8.7, keine zusätzlichen Plugins (über die Basisinstallation hinaus).

Irgendwelche Hinweise zum Debuggen, warum die Magie von Rails scheint hier zu versagen? Ist es ein Versions-Problem? Kann ich Code in die Bibliotheken zurückverfolgen und die Antwort finden? Es gibt so viele "Mixin" -Module, die ich nicht finden kann, wo die fixtures Methode wirklich lebt.

+0

APIdock ist nützlich für Zeiten wie diese, wenn Sie Methodendokumente finden müssen. http://apidock.com/rails/ActiveRecord/TestFixtures/ClassMethods/fixtures – x1a4

+0

danke x1a4! apidocks ist ein sehr praktisches Werkzeug, das ich meiner Toolbox hinzufügen werde. immer noch nicht sicher, was die Ursache ist, obwohl ... – Deano

Antwort

0

Nachdem ich aufgegeben habe, versuchte ich eine Neuinstallation/Rebuild auf Schiene 3.0.0beta3. Das hat das Problem gelöst. Ich kann nur annehmen, dass dies eine Art Versionskonflikt war.

1

Mit Ruby 1.8.7 und Schienen 2.1.1 löste ich das Problem, indem ich self.use_instantiated_fixtures = true in test_helper.rb setzte.

2

Mit Rails 3.2 finde ich, dass beim Laden einer einzigen Testdatei (Angabe von TEST =/test/unit/foo.rb) die Fixtures nicht geladen sind. Wenn die Tests jedoch mit

ruby -Itest /test/unit/foo.rb 

ausgeführt werden, werden die Fixtures wie erwartet geladen.