2011-12-28 25 views
7

Estoy usando RSpec, Spork, Capybara y Capybara Mechanic para escribir pruebas de integración para una ruta de registro que usa Facebook Connect. Corre correctamente a través del registro, pero los nuevos usuarios se crean en mi base de datos de desarrollo en lugar de la base de datos de prueba.¿Cómo usar la base de datos de prueba con Capybara?

RSpec está configurado para usar el entorno de prueba y he confirmado que cualquier método de modelo que ejecute en mi especificación afecta a la base de datos de prueba, pero todas las acciones de IU llegan al desarrollo.

Aquí está mi prueba:

it "go through registration path" do 
    print "RAILS_ENV: #{Rails.env}\n" # correctly prints 'test' 
    print "1) #{User.count}\n" # correctly shows the user count in my test database (zero) 

    Capybara.current_driver = :mechanize 

    visit root_path 
    click_link "register" 

    # Fill in Facebook Connect form 
    fill_in 'email', :with => "[email protected]" 
    fill_in 'pass', :with => "password" 
    click_button "Log In" 

    print "2) #{User.count}\n" # still shows zero users in the test database 

end 

Después de que la prueba puedo mirar a mi base de datos de desarrollo y el nuevo usuario ha sido creado allí.

He intentado configurar también database_cleaner y eso no ha ayudado.

¿Alguien sabe lo que tengo que hacer para que el carpincho llegue a la base de datos de pruebas?

carriles 3.1.3

rspec 2.7.0

spork 0.9.0

capibara 1.1.0

capibara-mecanizar 0.3.0.rc3

+0

¿Terminó resolviendo este problema usted? Estoy experimentando un problema similar en una aplicación en la que estoy trabajando. Intento iniciar sesión con un registro en la prueba, pero dice que el registro no existe. Así que estaba pensando que estaba relacionado con el uso del entorno dev, pero agregar el registro a dev es decir que tampoco existe. Así que no estoy seguro de si Capybara está utilizando una base de datos/entorno diferente al entorno de prueba rspecs. – JDutil

+0

Consulte mi respuesta para la solución. ¿Cómo estás creando tus usuarios? Estoy usando FactoryGirl que se inserta en la base de datos de prueba. – Chris

+0

Yo uso FactoryGirl también. Los registros se están creando dentro de la base de datos de prueba según lo previsto. Cuando cambio el controlador a Selenium o Webkit y el navegador necesita interactuar con los registros que no se devuelven ... intenté establecer las configuraciones del servidor como su respuesta también, ya que estaba pensando que mi configuración de POW estaba causando su ejecución en modo dev en el navegador, pero ese tampoco es el caso. – JDutil

Respuesta

4

El problema fue que tenía un servidor de desarrollo por separado que se ejecutaba en paralelo con las pruebas y las pruebas estaban en default en la misma dirección/puerto. Resolví esto agregando lo siguiente a spec_helper.rb para que Capibara usara un puerto diferente.

Capybara.run_server = true 
Capybara.server_port = 7000 
Capybara.app_host = "http://localhost:#{Capybara.server_port}" 
Cuestiones relacionadas