TypeScript
Examen de la unidad
Buscar..
alsaciano
Alsatian es un marco de prueba de unidad escrito en TypeScript. Permite el uso de casos de prueba y genera un marcado compatible con TAP .
Para usarlo, instálalo desde npm
:
npm install alsatian --save-dev
A continuación, configure un archivo de prueba:
import { Expect, Test, TestCase } from "alsatian";
import { SomeModule } from "../src/some-module";
export SomeModuleTests {
@Test()
public statusShouldBeTrueByDefault() {
let instance = new SomeModule();
Expect(instance.status).toBe(true);
}
@Test("Name should be null by default")
public nameShouldBeNullByDefault() {
let instance = new SomeModule();
Expect(instance.name).toBe(null);
}
@TestCase("first name")
@TestCase("apples")
public shouldSetNameCorrectly(name: string) {
let instance = new SomeModule();
instance.setName(name);
Expect(instance.name).toBe(name);
}
}
Para una documentación completa, vea el repositorio de GitHub de alsatian .
complemento chai-inmutable
Instalar desde npm chai, chai-immutable y ts-node
npm install --save-dev chai chai-immutable ts-node
Instala tipos para mocha y chai.
npm install --save-dev @types/mocha @types/chai
Escribir archivo de prueba simple:
import {List, Set} from 'immutable'; import * as chai from 'chai'; import * as chaiImmutable from 'chai-immutable'; chai.use(chaiImmutable); describe('chai immutable example', () => { it('example', () => { expect(Set.of(1,2,3)).to.not.be.empty; expect(Set.of(1,2,3)).to.include(2); expect(Set.of(1,2,3)).to.include(5); }) })
Ejecutarlo en la consola:
mocha --compilers ts:ts-node/register,tsx:ts-node/register 'test/**/*.spec.@(ts|tsx)'
cinta
la cinta es un marco de prueba de JavaScript minimalista, genera un marcado compatible con TAP .
Para instalar la tape
usando el comando npm
run.
npm install --save-dev tape @types/tape
Para usar la tape
con Typescript necesita instalar ts-node
como paquete global, para ejecutar este comando
npm install -g ts-node
Ahora estás listo para escribir tu primera prueba.
//math.test.ts
import * as test from "tape";
test("Math test", (t) => {
t.equal(4, 2 + 2);
t.true(5 > 2 + 2);
t.end();
});
Para ejecutar el comando test run
ts-node node_modules/tape/bin/tape math.test.ts
En salida deberías ver
TAP version 13
# Math test
ok 1 should be equal
ok 2 should be truthy
1..2
# tests 2
# pass 2
# ok
Buen trabajo, acabas de ejecutar tu prueba de TypeScript.
Ejecutar múltiples archivos de prueba
Puede ejecutar varios archivos de prueba a la vez utilizando comodines de ruta. Para ejecutar todas las pruebas de Typescript en el comando de ejecución del directorio de tests
ts-node node_modules/tape/bin/tape tests/**/*.ts
broma
jest es un marco de prueba de JavaScript sin dolor por Facebook, con ts-jest se puede utilizar para probar el código TypeScript.
Para instalar jest usando el comando npm run
npm install --save-dev jest @types/jest ts-jest typescript
Para facilitar el uso, instale jest
como paquete global.
npm install -g jest
Para hacer que jest
funcione con TypeScript, debe agregar la configuración a package.json
//package.json
{
...
"jest": {
"transform": {
".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
},
"testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
"moduleFileExtensions": ["ts", "tsx", "js"]
}
}
Ahora la jest
está lista. Supongamos que tenemos una muestra de fizz buz para probar
//fizzBuzz.ts
export function fizzBuzz(n: number): string {
let output = "";
for (let i = 1; i <= n; i++) {
if (i % 5 && i % 3) {
output += i + ' ';
}
if (i % 3 === 0) {
output += 'Fizz ';
}
if (i % 5 === 0) {
output += 'Buzz ';
}
}
return output;
}
Ejemplo de prueba podría verse como
//FizzBuzz.test.ts
/// <reference types="jest" />
import {fizzBuzz} from "./fizzBuzz";
test("FizzBuzz test", () =>{
expect(fizzBuzz(2)).toBe("1 2 ");
expect(fizzBuzz(3)).toBe("1 2 Fizz ");
});
Para ejecutar la ejecución de prueba
jest
En salida deberías ver
PASS ./fizzBuzz.test.ts
✓ FizzBuzz test (3ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 1.46s, estimated 2s
Ran all test suites.
Cobertura de código
jest
soporta la generación de informes de cobertura de código.
Para usar la cobertura de código con TypeScript, debe agregar otra línea de configuración a package.json
.
{
...
"jest": {
...
"testResultsProcessor": "<rootDir>/node_modules/ts-jest/coverageprocessor.js"
}
}
Ejecutar pruebas con generación de informes de cobertura ejecutados.
jest --coverage
Si se usa con nuestro zumbido de muestra, debería ver
PASS ./fizzBuzz.test.ts
✓ FizzBuzz test (3ms)
-------------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
-------------|----------|----------|----------|----------|----------------|
All files | 92.31 | 87.5 | 100 | 91.67 | |
fizzBuzz.ts | 92.31 | 87.5 | 100 | 91.67 | 13 |
-------------|----------|----------|----------|----------|----------------|
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 1.857s
Ran all test suites.
jest
también creó una coverage
carpeta que contiene un informe de cobertura en varios formatos, incluido un informe html fácil de usar en coverage/lcov-report/index.html