Hace poco vimos como hacer testing para Hana xs en SCP con jasmine y esta vez toca hacer lo mismo para SAP UI5.
Importamos la librería jasmine, y hacemos lo mismo que en SCP, venga hasta el próximo artículo…
Realmente se podría hacer así, pero ya que QUnit viene incluido en los resources de SAP UI5 y cuando creamos un proyecto nuevo en el SAP Web IDE a partir de un template viene todo preparado para usar QUnit, vamos a usar esta librería. No es muy diferente a jasmine, así que de paso veremos también los eventos de los tests.
Introducción a QUnit
Creamos un projecto nuevo desde el template SAP ui5 Application (por ejemplo) y vemos que en webapp hay una carpeta test (nos vamos a centrar en los test unitarios):
Si tus tests están en varios archivos (algo que deberías hacer si testeas más de un archivo), hay que incluir la ruta en el sap.ui.define del AllTests.js. Aunque en mi caso solo tengo un archivo de tests: Main.controller.js.
Si entramos en test/unit/controller/Main.controller.js
vemos que importa el archivo a testear, se invoca la función module de Qunit (es como los describe de jasmine) al hacerlo así todos los tests hasta el próximo module se agrupan bajo el module Main Controller. Si queremos hacer grupos a varios niveles (nested modules) sería así:
Hay que tener en cuenta un detalle si queremos hacer nested module: después de cada sub nivel hay que crear un test (el test 5 está ahí por esto), si no nos dará un error: Uncaught TypeError: Cannot read property ‘start’ of null.
He puesto algunos ejemplos de como escribir los test usando las comparaciones más básicas en la captura anterior (podéis ver más aquí).
Para ejecutar los tests vamos a Run/Run Configurations para definir una configuración. Pulsamos en el más y elegimos Run as Unit Test:
Elegimos el archivo, le damos un nombre y pulsamos en Save and Run. y se nos mostrará una web similar a la que vimos con jasmine (las funcionalidades son similares y es bastante intuitivo, así que os dejo jugar e investigar por vuestra cuenta):
Podemos ver que el group3 engloba a test3, test5 y al group4.
Eventos
Hay una serie de eventos que nos ayudan a preparar la ejecución de los tests. Podemos ejecutar código al principio de los test para dejar los datos preparados, o al final para devolver algo a su estado inicial. En la documentación de module podemos ver que acepta 3 parámetros: QUnit.module( name [, hooks] [, nested ] )
hooks tiene 4 métodos que ejecutan la función que se le pasa como argumento antes/después del grupo, y antes/después de cada test del grupo:
- before (function)
- after (function)
- beforeEach (function)
- afterEach (function)
Depende de como definamos el module (básico o nested) tenemos que asignar las funciones de los eventos de una manera u otra:
Y con esto doy por terminada la introducción al testing en SAPUI5, espero que haya sido de utilidad. Dentro de poco habrá un artículo sobre como simular un sistema externo (base de datos, oData) usando mocks y otro sobre el testing en ABAP.
0 comentarios