test rails ruby-on-rails ruby testing rspec fixtures

ruby-on-rails - rails test



Rails Fixtures no carga con rspec (2)

Por lo tanto, estoy tratando de aprender el marco de prueba rspec BDD en el contexto de un proyecto de rieles. El problema que tengo es que no puedo, por mi vida, hacer que mis accesorios se carguen correctamente en las descripciones de rspec.

Descargo de responsabilidad: Sí, hay cosas mejores que los accesorios para usar. Estoy tratando de aprender una cosa a la vez, aquí (específicamente rspec) antes de ir a jugar con las herramientas asociadas, como factory-girl, mocha, auto-test, etc. Como tal, estoy tratando de obtener el dead-simple , si es torpe, los accesorios funcionan.

De todos modos, aquí está el código:

/test/fixtures/users.yml -

# password: "secret" foo: username: foo email: [email protected] password_hash: 3488f5f7efecab14b91eb96169e5e1ee518a569f password_salt: bef65e058905c379436d80d1a32e7374b139e7b0 bar: username: bar email: [email protected] password_hash: 3488f5f7efecab14b91eb96169e5e1ee518a569f password_salt: bef65e058905c379436d80d1a32e7374b139e7b0

/spec/controllers/pages_controller_spec.rb -

require ''spec/spec_helper'' describe PagesController do integrate_views fixtures :users it "should render index template on index call when logged in" do session[:user_id] = user(:foo).id get ''index'' response.should render_template(''index'') end end

Y lo que obtengo cuando ejecuto ''rake spec'' es:

NoMethodError in ''PagesController should render index template on index call when logged in'' undefined method `user'' for #<Spec::Rails::Example::ControllerExampleGroup::Subclass_1:0x2405a7c> /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/test_process.rb:511:in `method_missing'' ./spec/controllers/pages_controller_spec.rb:7:

Es decir, no reconoce ''usuario (: foo)'' como un método válido.

Los dispositivos deben estar bien, ya que cuando los cargo en el desarrollo db a través de ''rake db: fixtures: load'', puedo verificar que foo y bar estén presentes en ese db.

Siento que me falta algo obvio aquí, pero me he estado arrancando todo el día en vano. Cualquier ayuda sería apreciada.


Si defines accesorios como ''usuarios'', entonces la forma de usarlos es a través del método con el mismo nombre:

describe PagesController do integrate_views fixtures :users it "should render index template on index call when logged in" do session[:user_id] = users(:foo).id get ''index'' response.should render_template(''index'') end end

El singular solo es relevante para la clase misma (Usuario). Espero que aún te quede algo de pelo si esto es solo un error de una letra.


Si desea configurar sus dispositivos de forma global, dentro de su spec_helper o rails_helper puede agregar:

RSpec.configure do |config| config.global_fixtures = :all end