2010-06-06 3 views
12

rotaie sembra non essere caricamento eventuali infissi per unità o test funzionali. Ho un semplice 'products.yml' che analizza ed appare corretta:ferroviarie test case infissi non caricando

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 

mio controller di test funzionale inizia con:

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 

Secondo il libro, Rails dovrebbe "magicamente" caricare gli infissi (. come il mio test_helper.rb ha fixtures :all in esso ho aggiunto anche il carico infissi esplicito (visto sopra) Sì Rails si lamenta:.

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 
... 

sono venuto attraverso le altre Rails domanda del dispositivo di prova Rails unit testing doesn't load fixtures, ma questo porta a un problema di plugin (qualcosa da fare con l'ordine di caricamento dei dispositivi).

BTW, sto sviluppando su Mac OS X 10.6 con Rail 2.3.5 e Ruby 1.8.7, senza plugin aggiuntivi (oltre l'installazione di base).

Eventuali puntatori su come eseguire il debug, , perché la magia di Rails sembra essere in errore qui? È un problema di versione? Posso rintracciare il codice nelle librerie e trovare la risposta? Ci sono così tanti moduli "mixin" che non riesco a trovare dove il metodo fixtures viva davvero.

+0

APIdock è utile in momenti come questo quando è necessario trovare i documenti di metodo. http://apidock.com/rails/ActiveRecord/TestFixtures/ClassMethods/fixtures – x1a4

+0

grazie x1a4! apidocks È uno strumento molto utile che aggiungerò alla mia casella degli strumenti. non sono ancora sicuro di quale sia la causa principale – Deano

risposta

0

Avendo rinunciato, ho provato una reinstallazione/ricostruzione su binario 3.0.0beta3. questo ha risolto il problema. Posso solo supporre che si trattasse di una sorta di disallineamento della versione.

1

Utilizzando ruby ​​1.8.7 e binari 2.1.1, ho risolto il problema impostando self.use_instantiated_fixtures = true in test_helper.rb.

2

Con Rails 3.2, trovo che quando si esegue un singolo file di test (specificando TEST =/test/unit/foo.rb), le fixture non vengono caricate. Tuttavia quando si eseguono i test con

ruby -Itest /test/unit/foo.rb 

gli apparecchi vengono caricati come previsto.