2010-06-06 19 views
12

Rieles aparece en no cargando accesorios para pruebas de unidad o funcionales. Tengo un simple 'products.yml' que se analiza y parece correcta:Accesorios de la caja de prueba de rieles no cargando

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 

Mi prueba de funcionamiento del controlador comienza 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 

Según el libro, rieles debe "mágicamente" cargar los accesorios (. como mi test_helper.rb tiene fixtures :all en ella también añadió la carga explícita accesorios (visto anteriormente) Sí Carriles se queja:.

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

me llegó a través de los otros carriles Pregunta de dispositivo de prueba Rails unit testing doesn't load fixtures, pero eso lleva a un problema de complemento (algo que tiene que ver con el orden de los dispositivos de carga).

BTW, estoy desarrollando en Mac OS X 10.6 con Rail 2.3.5 y Ruby 1.8.7, sin complementos adicionales (más allá de la instalación base).

Cualquier información sobre cómo depurar, ¿por qué parece que la magia de Rails está fallando aquí? ¿Es un problema de versión? ¿Puedo rastrear código en las bibliotecas y encontrar la respuesta? Hay tantos módulos "mixin" que no puedo encontrar donde realmente vive el método fixtures.

+0

APIdock es útil para momentos como este cuando necesita encontrar documentos de métodos. http://apidock.com/rails/ActiveRecord/TestFixtures/ClassMethods/fixtures – x1a4

+0

gracias x1a4! apidocks es una herramienta muy útil que añadiré a mi caja de herramientas. aún no estoy seguro de cuál es la causa raíz ... – Deano

Respuesta

0

Después de haber renunciado, intenté reinstalar/reconstruir en el riel 3.0.0beta3. esto resolvió el problema Solo puedo suponer que esto fue algún tipo de desajuste de versión.

1

Usando ruby ​​1.8.7 y rails 2.1.1, resolví el problema estableciendo self.use_instantiated_fixtures = true en test_helper.rb.

2

Con Rails 3.2, me parece que al ejecutar un solo archivo de prueba (que especifica TEST =/test/unit/foo.rb), los dispositivos no se cargan. Sin embargo, al ejecutar las pruebas con

ruby -Itest /test/unit/foo.rb 

las luminarias se cargan como se esperaba.

Cuestiones relacionadas