stringtranslate.com

REspecificaciones

RSpec es una herramienta de prueba de lenguaje específico de dominio (DSL) (dominio de aplicación particular) escrita en el lenguaje de programación Ruby para probar código Ruby. [4] Es un marco de desarrollo impulsado por el comportamiento (BDD) que se usa ampliamente en aplicaciones de producción. La idea básica detrás de este concepto es la del desarrollo impulsado por pruebas (TDD) donde las pruebas se escriben primero y el desarrollo se basa en escribir solo el código suficiente para cumplir con esas pruebas seguido de la refactorización . Contiene su propio marco de simulación que está completamente integrado en el marco basado en JMock. [5] La simplicidad en la sintaxis de RSpec lo convierte en una de las herramientas de prueba populares para aplicaciones Ruby. La herramienta RSpec se puede usar instalando la gema que consta de otras tres gemas, a saber , y [4] rspec rspec-corerspec-expectationrspec-mock.

Historia

RSpec fue creado como un experimento por Steven Baker en 2005 junto con los miembros de su equipo Dave Astels, Aslak Hellesøy y David Chelimsky. Chelimsky fue responsable del desarrollo de RSpec-Rails, que facilitó la integración con Ruby on Rails. La versión inicial, es decir, RSpec 1.0, salió en mayo de 2007 y contenía muchas de las principales características de RSpec que también se incluyen en las últimas versiones. Sin embargo, debido a algunos problemas técnicos, como la velocidad de las pruebas, se suspendió más tarde. La tercera versión de RSpec, es decir, RSpec 3, se lanzó en julio de 2014 y tenía muchas características nuevas, como verificación de dobles, comparadores componibles y muchas más.

Uso

Describir el comportamiento de los objetos

Como se mencionó anteriormente, RSpec proporciona un lenguaje específico del dominio para describir el comportamiento de los objetos . Las palabras clave utilizadas en RSpec son similares a las que se utilizan en otros lenguajes y/o marcos TDD. [6] Por ejemplo, si se consideran las palabras clave utilizadas en Test::Unit, se pueden asignar a las palabras clave de RSpec de la siguiente manera:

Existen muchas palabras clave de este tipo que se utilizan en el mismo contexto pero con nombres similares. La sintaxis de RSpec facilita la lectura y describe el comportamiento del código, lo que proporciona libertad al programador. Todos los marcos de prueba funcionan según el siguiente flujo: dado un contexto, cuando ocurre un evento, qué resultado se espera. Los métodos como describe() , context() e it() forman la analogía y el esqueleto respectivamente del código de prueba.

describir()

El método describe() se utiliza para describir una clase, un método o un grupo de ejemplo. Este es el bloque externo que contiene realmente el código de prueba y describe las características del código incluido en él. Este método toma una serie de argumentos y un bloque opcional. [6] Sin embargo, normalmente se utilizan uno o dos argumentos para describir el comportamiento del grupo de ejemplo. El primer argumento representa la referencia a la clase o al módulo, mientras que el segundo argumento es opcional y su tipo de datos sería String . [6] Los grupos de ejemplo también se pueden anidar. A continuación se muestra un ejemplo del uso del método describe: [6]

describe Usuario , "sin saldo en cuenta" { .... } => Usuario sin saldo en cuenta        

[6]

contexto()

El bloque context() se utiliza para describir el contexto en el que se utiliza la clase o el método mencionado en el bloque describe. Esto se puede considerar como un alias de la palabra describe() en este escenario y ambos se pueden utilizar indistintamente. Generalmente, describe() se utiliza para cosas y context() se utiliza para contextos. Ayuda a aventurar diferentes resultados en diferentes escenarios. El ejemplo mencionado anteriormente se puede describir utilizando el método context() de la siguiente manera: [6]

describe Usuario hacer contexto "no tiene saldo en cuenta" hacer .... fin fin       

[6] El uso de context() facilita el escaneo de un archivo de especificaciones y deja claro a qué se relaciona.

él()

Es un método RSpec que describe las especificaciones de la muestra en el contexto. El bloque it() toma una cadena como argumento y la cadena después de la palabra clave 'it' puede considerarse como la función que se espera que realice el bloque o, en otras palabras, puede considerarse como un caso de prueba. Considere el siguiente ejemplo: [6]

describe Usuario do context "no tiene saldo en cuenta" do it "no se le permite sancionar un préstamo de vivienda" do puts "El préstamo no puede ser sancionado por no tener saldo en la cuenta." end end end            

[6]

RSpec::Expectativas

En RSpec, una expectativa es una declaración que expresa el estado en el que se espera que se encuentre algo en un punto particular de la ejecución de un ejemplo de código. RSpec utiliza un marco simple y palabras clave como should() y should_not() para expresar expectativas. Admite comparadores, es decir, objetos que intentan hacer coincidir un resultado esperado, para operaciones comunes, así como expresiones poco comunes. Por ejemplo, si el resultado esperado de un resultado es, por ejemplo, el valor numérico 5, una expectativa de RSpec que utilice el comparador equal para lo mismo se escribiría de la siguiente manera: [6]

result.should equal(5)

RSpec::Simulacros

RSpec proporciona una biblioteca llamada RSpec::Mocks para crear dobles de prueba que facilitan el enfoque en roles, el descubrimiento de interfaces, pero sobre todo el progreso sin dependencias implementadas , proporcionando así aislamiento del acoplamiento y el no determinismo . [6]

Herramientas e integración

RSpec es compatible con numerosos editores de texto y paquetes de cobertura. RSpec también proporciona una serie de utilidades y puntos de extensión para permitir la ampliación de RSpec a fin de satisfacer las necesidades específicas del dominio. Por ejemplo, mediante el uso de metadatos asociados con grupos y ejemplos con el fin de generar informes, mediante la configuración global para asignar bloques antes y después a cada grupo de ejemplos, mediante el uso de macros , etc.

Otras herramientas de prueba de Ruby

Referencias

  1. ^ Equipo central de RSpec. Consultado el 8 de abril de 2013.
  2. ^ "todas las versiones de rspec". rubygems.org . Consultado el 11 de febrero de 2014 .
  3. ^ "Versión 3.13.0". 4 de febrero de 2024. Consultado el 20 de febrero de 2024 .
  4. ^ ab "Introducción a RSpec | El Proyecto Odin". www.theodinproject.com . Consultado el 18 de febrero de 2017 .
  5. ^ "jMock - Una biblioteca expresiva de objetos simulados para Java". www.jmock.org . Consultado el 18 de febrero de 2017 .
  6. ^ abcdefghijk "El libro de RSpec: desarrollo basado en el comportamiento con RSpec, Cucumber y amigos por David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, ​​Dan North | The Pragmatic Bookshelf". pragprog.com . Consultado el 11 de febrero de 2017 .


Lectura adicional

1. Introducción a RSpec: (pasos de instalación) http://rspec.info/

2. Beck, K. (2014). Desarrollo basado en pruebas mediante ejemplos. Boston: Addison-Wesley.

Enlaces externos