TestBox
Framework de pruebas y mocking
Latest Ortus News
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!
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.
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
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