Pregunta ¿Debo escribir pruebas de rieles con la palabra clave def o test?


Esto parece una pregunta simple pero no puedo encontrar la respuesta en ningún lado. Me he dado cuenta de que, en general, las pruebas en una aplicación de Ruby on Rails se pueden escribir como:

  test "the truth" do
    assert true
  end

o

  def the_truth
    assert true
  end

Parece que el material más nuevo escribe las pruebas de la primera manera, pero parece que no puedo encontrar una razón para esto. ¿Se favorece a uno sobre el otro? ¿Es uno más correcto? Gracias.


5
2017-07-31 17:02


origen


Respuestas:


Ha habido un cambio en los últimos años de nombres de prueba cortos y abreviados a nombres de prueba más largos y parecidos a oraciones. Esto se debe en parte a la popularidad de RSpec y al concepto de que las pruebas son especificaciones y deben ser descriptivas.

Si prefiere los nombres de las pruebas descriptivas, le recomiendo que vaya con la test método. Me parece que es más legible.

test "should not be able to login with invalid password" do
  #...
end

def_should_not_be_able_to_login_with_invalid_password
  #...
end

Además, como la descripción es una cadena, puede contener cualquier carácter. Con def está limitado en qué personajes puede usar.


8
2017-07-31 21:50



Creo que el primer método se implementó a partir de Rails 2.2. Por lo que yo sé, simplemente mejora la legibilidad de tu código (ya que def puede ser cualquier función mientras la prueba se usa solo en casos de prueba). ¡Buena suerte!


2
2017-07-31 17:06



Como Mike Trpcic sugiere, deberías revisar RSpec y Cucumber. Me gustaría agregar que también debería echar un vistazo a:

Shoulda es un marco macro para escribir pruebas de unidad concisas para sus modelos / controladores, mientras que el segundo es un reemplazo para accesorios.


0
2017-07-31 19:09



Yo sugeriría hacer su prueba con cualquiera RSpec o Pepino. Yo uso ambos para probar todas mis aplicaciones. RSpec se utiliza para probar los modelos y controladores, y Cucumber prueba las Vistas (a través de Webrat funcionalidad).


-1
2017-07-31 17:40