Como hemos hablado con anterioridad TypeScript es una solución muy efectiva para poder hacer aplicaciones escalables y estructuradas con JavaScript. Para completar todo este ciclo, voy a enseñaros cómo hacer test unitarios dentro de nuestros desarrollos en TypeScript.
Para poder hacer testing dentro de Visual Studio tenemos dos opciones:
- Utilizando ReSharper. Por si alguien no conoce este plugin, es un complemento para ayudar a refactorizar, categorizar y «facilitar» el desarrollo. Tiene un inconveniente: es de pago.
- Instalarle dos plugin totalmente gratuitos. Estos son: Chutzpah Test Adapter for the Test Explorer y Chutzpah Test Runner Context Extensión

Estas dos extensiones hacen que cuando escribamos un test en JavaScript, lo podamos ejecutar desde el propio Test Explorer que viene en Visual Studio o bien desde el propio fichero donde está definido. Pero para poder ejecutar el test, en primer lugar tenemos que seleccionar el framework de Test a utilizar. Hay multitud de ellos: Jasmine, QUnit, Mocha, etc. En este caso vamos a utilizar Jasmine (aunque el ejemplo es válido para cualquiera de ellos).
Manos a la obra
En primer lugar, abrimos Visual Studio, creamos un Proyecto Web e instalamos los siguientes paquetes Nuget:
A continuación, nos creamos una clase Persona dentro de Typescript con la siguiente estructura:
class Persona {
nombre: string;
apellidos: string;
constructor(nombre: string, apellidos: string) {
this.nombre = nombre;
this.apellidos = apellidos;
}
FullName():string {
return this.nombre + " " + this.apellidos;
}
}
En base a esta clase, escribimos un test para comprobar que el método FullName nos devuelva los valores adecuados. Para ello, en primer lugar crearemos una carpeta de Test y en la misma creamos un fichero TypeScript con los test que vayamos a escribir. Antes de empezar a realizar los test, tendremos que añadir los tipos de nuestro FrameWork JavaScript. En nuestro caso Jasmine. De esta forma, nuestra clase quedará de la siguiente manera:
/// <reference path="../typings/jasmine/jasmine.d.ts" />
/// <reference path="../persona.ts" />
describe("Person FullName", () => {
var person: Persona;
beforeEach(() => {
person = new Persona("Adrian","Diaz");
});
it("should concatenate first and last names", () => {
expect(person.FullName()).toBe("Adrian Diaz");
});
});
A continuación, vamos dentro de las Vistas de la aplicación Views/Jasmine/SpecRunner.cshtml y añadimos la referencia del fichero js que vamos a utilizar. Ejemplo:
<script type="text/javascript" src="/Scripts/persona.js"></script>
Si todo ha ido de forma correcta, mostramos la ventana de Test y nuestro test estará dentro del Test Explorer.
En algunos entornos es posible que los test se muestren duplicados. Para ello, hay que añadir un fichero chutzpah.json y añadirle una configuración similar a la siguiente:
"Compile": {
"Mode": "External",
"Extensions": [".ts"],
"ExtensionsWithNoOutput": [".d.ts"]
},
"References": [
{ "Path": "scripts/jasmine.js" },
{ "Path": "scripts/typings/" },
{
"Path": "app/", "Exclude": "*/app/test/*"
}
],
"Tests": [
{ "Path": "app/test", "Include": "*.ts" }
]
}
Conclusión
Typescript tiene todo lo que necesitamos para poder utilizarlo en aplicaciones de gran envergadura. Es una lenguaje muy potente y que combina lo mejor de un lenguaje servidor como es C# con la potencia y flexibilidad de un lenguaje de cliente como es el JavaScript. En cuanto a los test, no deben de ser opcional y hay que dotarlo en nuestras aplicaciones para asegurar el mantenimiento de las mismas.

¡Suscríbete a nuestras RRSS!
