Refrescando los apuntes de testing automático en SAPUI5 (Parte 2) – Qunit

Seguimos refrescando apuntes del testing automático en nuestras aplicaciones SAPUI5. En esta entrada prepararemos de manera rápida un test para validar si el servicio de OData del servidor local de la parte 1 es igual al del servidor.

Hace un tiempo preare un tutorial para probar nuestros formatters com Qunit, aquí os dejo el enlace por si queréis refrescar la memoria.

Antes de empezar solo comentar que las dos entradas son complementarias, lo que haremos en esta se puede añadir a vuestros test unitarios.

Vamos manos a la obra.

Preparando el proyecto para Qunit

Lo primero sera crear una carpeta llamada «backend» en «test» > «unit».

En la carpeta crearemos un fichero llamado «Backend.js»

Lo siguiente sera informar al sistema de test que hay un nuevo fichero de test, para ello vamos al archivo allTest.js y añadiremos en «define» la ruta al nuevo fichero de test:

Creando el test

El test que vamos a realizar sera el siguiente. Vamos a instanciar un modelo del servicio OData V2 con referencia al servidor y otro igual pero con referencia al servidor local.

Compararemos los dos modelos, si no son iguales es que el backend se ha modificado respecto a la versión que tenemos en local.

Antes de presentar el fichero final, os voy contando algunas de las partes importantes:

  • Obtenemos el metadata del servicio backend:
var oModel = new sap.ui.model.odata.ODataModel("/v2/northwind/northwind.svc/");
  • Preparamos el servidor local añadiendo en la ruta «Local»:
        var oMockServer = new MockServer({
            rootUri: "/Local/v2/northwind/northwind.svc/"
        });

        // simulate
		var sPath = sap.ui.require.toUrl("ecastella/testing2/localService");
		oMockServer.simulate(sPath + "/metadata.xml", sPath + "/data");
        // start
		oMockServer.start();
  • Una vez arrancado el servidor local hacemos la solicitud para obtener los datos del servidor local.
var oModelLocal = new sap.ui.model.odata.ODataModel("/Local/v2/northwind/northwind.svc/");
  • Por último, validamos los dos modelos:
        if(JSON.stringify(oModel.getServiceMetadata()) === JSON.stringify(oModelLocal.getServiceMetadata())){
            assert.ok(true, 'Local and remote models (metadata) are equal');
            oMockServer.stop();
            done();
        } else {
            oMockServer.stop();
            throw new Error("Local and remote models (metadata) aren't equal");
        }

Y ahora el contenido del fichero completo:

/*global QUnit*/


sap.ui.define([
	"ecastella/testing2/controller/App.controller",
    "sap/ui/model/odata/v2/ODataModel",
    "sap/ui/core/util/MockServer"
], function (Controller,ODataModel,MockServer) {
	"use strict";

	QUnit.module("Backend Test");

    QUnit.test("Check metadata", function (assert) {

        var assertIn = assert;
        const done = assert.async();

        var oModel = new sap.ui.model.odata.ODataModel("/v2/northwind/northwind.svc/");

        var oMockServer = new MockServer({
            rootUri: "/Local/v2/northwind/northwind.svc/"
        });

        // simulate
		var sPath = sap.ui.require.toUrl("ecastella/testing2/localService");
		oMockServer.simulate(sPath + "/metadata.xml", sPath + "/data");
        // start
		oMockServer.start();
        var oModelLocal = new sap.ui.model.odata.ODataModel("/Local/v2/northwind/northwind.svc/");

        if(JSON.stringify(oModel.getServiceMetadata()) === JSON.stringify(oModelLocal.getServiceMetadata())){
            assert.ok(true, 'Local and remote models (metadata) are equal');
            oMockServer.stop();
            done();
        } else {
            oMockServer.stop();
            throw new Error("Local and remote models (metadata) aren't equal");
        }
        
	});

});

Ejecutando el test

Solo con estas pequeñas configuraciones podemos ejecutar los test con el comando:

npm run unit-tests

Y este será el resultado

Pero… que pasa si no son iguales los metadatas del servidor local y del backend… Para probarlo vamos a modificar el metadata del mockserver cambiando la entidad «Categories».

Y este será el resultado:


Esta pequeña utilidad nos ayudara a poder validar que la estructura de datos locales y del servidor están alineados para cuando ejecutemos OPA5 con datos locales.

Como siempre suscribete y comparte en redes para ayudar este blog.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.