2011-03-16 9 views
5

Estoy aprendiendo a hacer pruebas ahora mismo, pero tengo algunos problemas con Webrat al no encontrar campos de formulario usando fill_in aunque he verificado que está en la página correcta. ¿Funciona Webrat sin nombres de campo o ID? He intentado usar símbolos de Ruby y nombres de formularios para acceder al campo, pero ninguno funciona en mi caso. ¿Ves algo incorrecto con mi implementación?Rails 3 pruebas de integración - Usar webrat fill_in sin encontrar campos

El mensaje de error:

5) Forwarding should forward the user to the requested page after signin 
    Failure/Error: integration_sign_in(user) 
    Could not find field: :email 

El código de prueba:

it "should forward the user to the requested page after signin" do 
    user = Factory(:user) 
    visit edit_user_path(user) 

    # The test automatically follows the redirect to the signin page 
    puts current_url 
    integration_sign_in(user) 

    # The test follows the redirect again, this time to users/edit 
    response.should render_template('users/edit') 
end 

donde integration_sign_in es en el spec_helper.rb

def integration_sign_in(user) 
    fill_in :email, :with => user.email 
    fill_in :password, :with => user.password 
    click_button 
end 

El campo de formulario HTML:

<form action='/sessions' class='mtm' id='sign-in-form' method='post'> 
    <input name='authenticity_token' type='hidden' value='iIIqT6bUwiJkpqpgxm5sjAj3egrNcEgeXPsYmbKQ02U='> 
     <div class='landingSignInForm'> 
      <label class='mas signin-label' for='email'>E-mail:</label> 
      <input class="mls ras" id="email" name="email" placeholder="e-mail address" type="text" /> 
      <label class='mas signin-label' for='password'>Password:</label> 
      <input class="mls ras" id="password" name="password" placeholder="password" type="password" /> 
      <input checked='checked' class='mls mtm' name='remember' type='checkbox' value='permanent'> 
      <span class='remember-me-label'>Keep me signed in</span> 
      <input class='mls mvm ram medium silver button' name='submit' type='submit' value='Sign in'> 
      <a class='forgot-password' href='#'>Forget your password?</a> 
     </div> 
</form> 

Respuesta

1

¿Ha intentado utilizar el selector css para ID en lugar de simplemente pasar un símbolo que coincida? Intenté leer brevemente la fuente webrat para determinar si trata los símbolos como cadenas internamente, preguntándome si ese es tu problema. No puedo encontrar ningún ejemplo de sintaxis webrat usando solamente fill_in :symbolfill_in 'string'

Prueba esto:

def integration_sign_in(user) 
    fill_in 'email', :with => user.email 
    fill_in 'password', :with => user.password 
    click_button 
end 

o la ruta selector CSS para sus IDs:

def integration_sign_in(user) 
    fill_in '#email', :with => user.email 
    fill_in '#password', :with => user.password 
    click_button 
end 
+0

Gracias por la respuesta Brett. Lamentablemente, ninguno de los trabajos anteriores (símbolos, nombres, ID, etc.). Estoy casi listo para renunciar a Webrat e instalar Capybara para ver si es solo un problema de Webrat – iwasrobbed

+0

No tengo idea, entonces, lo siento, no pude ayudar más. ¡Buena suerte! –

+0

¡No se preocupe, gracias otra vez! – iwasrobbed

1

Se debe trabajar con cualquiera

fill_in 'email', :with => user.email # field name 

O

fill_in 'E-mail', :with => user.email # partial label text 

Consulte el webrat documentation para obtener más información.

Además, he notado que algunos de sus campos de entrada no están cerrados. ¿Es este el HTML exacto que genera su plantilla?

En general, recomendaría cambiar a capibara, pero dudo que webrat es realmente roto.

+0

Podrías pensarlo, pero no hay dados. Hay algo más que va mal aquí. Capybara da el mismo error y he intentado llamar al campo de todas las formas y verificar que estaba en la página correcta. – iwasrobbed

Cuestiones relacionadas