God Object

God Object

god object

El God Object un objeto muy grande, que conoce demasiado o tiene demasiadas responsabilidades distintas.

En este tipo de objetos , toda la funcionalidad del programa esta codificada él.

 

Usamos esta técnica ocasionalmente para entornos de programación ajustados, donde el aumento de rendimiento ligero y la centralización es más importante que el mantenimiento y la elegancia de programación.

 

Crear un God Object se le considera una mala práctica de programación. Es un ejemplo de un antipatrón de diseño.  Se le conoce también como el anti-pattern. Contradice y viola todas las reglas de diseño y código limpio.

El principal problema de este tipo de objecto es que nuestro código se volverá débil e inestable. Cualquier cambio en él, podrían suponer la aparición de errores o comportamientos inesperados. Además, se haría muy complejo su mantenimiento a largo plazo.

 

La solución para que podamos deshacernos de este tipo de objecto es  que refactorizar  el God Object en varios objectos lo más independientes posibles unos de otros.

Instalar JEST en un proyecto de Javascript

Crear fichero package.json:

npm init  // tipo cuestionario
npm init --yes //crea todo por defecto

 

Instalar jest vía npm:

npm install --save-dev jest

 

Añadir a package.json:

{
  "scripts": {
    "test": "jest"
  }
}

**Si queremos que este fijo abierto el servicio, lo añadimos de la siguiente manera:

{
  "scripts": {
    "test": "jest --watch"
  }
}

**»test»: «jest –watchAll» –>sin git

Con esta mejora, ya no tenemos que estar lanzando el test cada vez, si no cada vez que guardemos, nos lo lanzará.

 

Añadir también esto al package.json si vamos a usar jsdom,

"jest": {
    "verbose": true,
    "testURL": "http://localhost/"
},

https://github.com/jsdom/jsdom/issues/2304

si no dará el siguiente error:

 SecurityError: localStorage is not available for opaque origins
      
      at Window.get localStorage [as localStorage] (node_modules/jsdom/lib/jsdom/browser/Window.js:257:15)
          at Array.forEach (<anonymous>)

 

Vista final del package.json:

 

Crear carpeta test y dentro el archivo spec.js con el siguiente código de ejemplo:

describe("test de prueba", function () {
    it("verdadero es verdadero", function () {
        expect(true).toBeTruthy();
    });
});

**Matchers de Jest para realizar los test

 

Iniciar el test:

npm test

Debería salir una respuesta así, que nos confirma que esta pasando el test:

 


Descarga Proyecto de Ejemplo

 

Links: Documentación Oficial Jest

Instalación Jasmine Standalone (a pelo)

  1. Descargamos la distribución del Jasmine del siguiente enlace: https://github.com/jasmine/jasmine/releases
  2. Creamos en nuestro proyecto una carpeta llamada jasmine:
    mkdir my-proyect/jasmine
  3. Descomprimos el fichero zip :
    unzip jasmine-standalone-{#.#.#}.zip
  4. Colocamos la carpeta jasmine dentro de la carpeta principal del proyecto.
  5. Añadir a nuestros documento HTML las siguientes lineas:
    <link rel="shortcut icon" type="image/png" href="jasmine/lib/jasmine-{#.#.#}/jasmine_favicon.png">
    <link rel="stylesheet" type="text/css" href="jasmine/lib/jasmine-{#.#.#}/jasmine.css">
    
    <script type="text/javascript" src="jasmine/lib/jasmine-{#.#.#}/jasmine.js"></script>
    <script type="text/javascript" src="jasmine/lib/jasmine-{#.#.#}/jasmine-html.js"></script>
    <script type="text/javascript" src="jasmine/lib/jasmine-{#.#.#}/boot.js"></script>

*Nota: Donde están los {#.#.#} cambiarlo por la versión que hayamos descargado, por ejemplo 3.1.0

** Se nos quedan dos index.html, uno para los test y otro el index de la aplicación. En este caso se metio en la carpeta test.

En el archivo index.spec.js pondremos nuestros test

 

 

 

 

 

https://github.com/jasmine/jasmine#installation