-
TestBox logo

TestBox

Framework de pruebas y mocking

Resumen de TestBox

TestBox es un framework de pruebas de nueva generación para BoxLang y CFML basado en BDD (Behavior Driven Development) que ofrece una sintaxis limpia y clara para escribir pruebas. Incluye no solo un framework de pruebas, runner, librería de aserciones y expectativas, sino también MockBox, un framework de Mocking y Stubbing.

Instalación

Puedes empezar rápidamente con TestBox aprovechando CommandBox, nuestro CLI y gestor de paquetes. Solo ejecuta los siguientes comandos para instalar la versión estable más reciente o la versión bleeding edge.

// Instalar versión estable más reciente
box install testbox --saveDev
// Instalar versión bleeding edge
box install testbox@be --saveDev

También puedes visitar https://cfdocs.org/testbox para una guía de referencia rápida.

Sintaxis BDD y xUnit

TestBox soporta una sintaxis legible de tipo Behavior Driven Development y también el estilo más tradicional xUnit.

                                    describe("A spec", function() {
                                        beforeEach(function() {
                                            testbox = 22;
                                            application.wirebox = new wirebox.system.ioc.Injector();
                                        });
                                        afterEach(function() {
                                            testbox = 0;
                                            structDelete( application, "wirebox" );
                                        });
                                   
                                        // Usando declaraciones estilo Gherkin
                                        scenario( "Obtener volumen de caja", function(){
                                            given( "He introducido un ancho de 20
                                                Y una altura de 30
                                                Y una profundidad de 40", function(){
                                                when( "Ejecuto el cálculo", function(){
                                                    then( "el resultado debe ser 24000", function(){
                                                        // llama al método con los argumentos y prueba el resultado
                                                        expect( myObject.myFunction(20,30,40) ).toBe( 24000 );
                                                    });
                                                });
                                            });
                                        });
                                   
                                        it("puede tener más de una expectativa y hablar con scopes", function() {
                                            expect( testbox ).toBe( 22 );
                                            expect( application.wirebox.getInstance( 'MyService' ) ).toBeComponent();
                                        });
                                   
                                        describe("anidado dentro de un segundo describe", function() {
                                            beforeEach(function() {
                                                awesome = 22;
                                            });
                                            afterEach(function() {
                                                awesome = 22 + 8;
                                            });
                                            it("puede referenciar ambos scopes según sea necesario ", function() {
                                                expect( testbox ).toBe( awesome );
                                            });
                                        });
                                   
                                        it("puede declararse después de suites anidadas y tener acceso a variables anidadas", function() {
                                            expect( awesome ).toBe( 30 );
                                        });
                                    });
                                
@displayName( "Suite TestBox xUnit" )
@labels( "security,api" )
class{
/*********************************** Métodos del ciclo de vida ***********************************/
function beforeTests(){
application.salvador = 1;
}
function afterTests(){
structClear( application );
}
function setup(){
request.foo = 1;
}
function teardown(){
structClear( request );
}
/*********************************** Métodos de prueba ***********************************/
function testIncludes(){
$assert.includes( "hello", "HE" );
$assert.includes( [ "Monday", "Tuesday" ] , "monday" );
}
function testNotIncludes(){
$assert.notIncludes( "hello", "what" );
$assert.notIncludes( [ "Monday", "Tuesday" ] , "Friday" );
}
function testIsNotEmpty(){
$assert.isNotEmpty( [1,2] );
$assert.isNotEmpty( {name="luis"} );
$assert.isNotEmpty( "HelloLuis" );
$assert.isNotEmpty( querySim( "id, name
1 | luis") );
}
function testSkipped() skip{
$assert.fail( "Esta prueba debería fallar" );
}
boolean function isRailo(){
return structKeyExists( server, "railo" );
}
function testSkippedWithConstraint() skip="isRailo"{
$assert.fail( "Esta prueba debería fallar" );
}
function testAssertShortcut() {
assert( application.salvador == 1 );
}
function testisTrue() {
$assert.isTrue( 1 );
}
/*********************************** Métodos NO ejecutables ***********************************/
function nonStandardNamesWillNotRun() {
fail( "Los métodos que no son pruebas no deberían ejecutarse" );
}
private function privateMethodsDontRun() {
fail( "Los métodos privados no se ejecutan" );
}
}
                                

Capacidades

Aquí tienes algunas de las principales características de TestBox y MockBox

  • Pruebas estilo BDD
  • Pruebas estilo xUnit
  • Métodos del ciclo de vida de pruebas
  • Integración con MockBox para mocking y stubbing
  • Posibilidad de extender y crear runners personalizados
  • Posibilidad de extender y crear reporters personalizados
  • Reporters extensibles, incluye muchos:
    • JSON
    • XML
    • BoxLang
    • JUnit XML
    • Texto (estilo años 80)
    • Consola
    • TAP (Test Anything Protocol)
    • HTML simple
    • Min - Minimalista
    • Raw
    • CommandBox
  • Pruebas asíncronas
  • Capacidad multi-suite
  • Saltar pruebas
  • Saltar suites
  • Soporte dinámico para saltar pruebas en tiempo de ejecución
  • Ejecutar una o más suites exclusivamente
  • Ejecutar una o más pruebas/specs exclusivamente
  • Etiquetas y tagging de pruebas
  • Salida de depuración de pruebas
  • Títulos de suites clicables para filtrar ejecución
  • ¡Y mucho más!

Leer más

Soporte profesional y formación

Si te quedas atascado o necesitas ponerte al día con testing, mocking, integración continua o cualquier cosa relacionada con BDD, estaremos encantados de ayudarte. Puedes obtener soporte profesional o formación directamente del equipo de TestBox en cualquier parte del mundo.

cfcasts

CBOX-205 : Desarrollo CFML con BDD y TDD

CBOX-205 es uno de nuestros cursos principales que se centra en principios de testing, TDD (Test Driven Development), BDD (Behavior Driven Development), mocking y automatización. Ver más...

1 - 2 días

$1,399.00

Por alumno

RESERVAR
waveup-lightBlue
waveup-lightBlue
Got Questions?

Got Questions?

Please contact us at consulting@ortussolutions.com for further information or click the button below and send us a quick message.

CONTACT US