25. Pruebas

Versión para imprimir.

A. Introducción

B. Pruebas de rendimiento y soporte de estándares

C. PHPUnit

Versión para imprimir.

1. introducción

  • Las pruebas de unidad permiten asegurar que una parte del código cumple correctamente con sus funciones.

  • A continuación se muestra como realizar pruebas del servidor con PHPunit.

  • En la práctica, los sistemas deben pasar todas las pruebas. En este ejemplo se fallan algunas.

2. Salida de las pruebas realizadas

Esta salida muestra algunos fallos para que te des cuenta como se ven. En la práctica, todas la pruebas deben aprobarse.


  PHPUnit 10.5.5 by Sebastian Bergmann and contributors.

  Runtime:       PHP 8.2.7
  
  ..F                                                                 3 / 3 (100%)
  
  Time: 00:00.091, Memory: 8.00 MB
  
  There was 1 failure:
  
  1) RecomiendaTest::testReg2
  Probando reg 2
  Failed asserting that two strings are equal.
  --- Expected
  +++ Actual
  @@ @@
  -'Daddy Yankee.'
  +'Bad Bunny.'
  
  /home/runner/phpunit/tests/RecomiendaTest.php:19

3. Hazlo funcionar

  • Este ejercicio usa la librería PHPUnit para PHP. Puedes profundizar en este tema en la URL https://phpunit.de/

  • Descarga el archivo /src/phpunit.zip y descompáctalo.

  • Abre la carpeta descompactada con Visual Studio Code.

  • Edita los archivos que que desees.

  • El proyecto ya contiene la carpeta vendor y el archivo composer.lock, pero si quieres crearlos, debes seguir estos pasos:

    1. Instalar composer. Para Windows, usa el instalador de https://getcomposer.org/download/.

    2. Abre una terminal y ejecuta el comando
      composer update

  • Abre una terminal y ejecuta el comando
    ./vendor/bin/phpunit tests

4. Archivos

Haz clic en los triángulos para expandir las carpetas

5. Carpeta « src »

A. src / recomienda.php

1<?php
2
3function recomienda(string $genero): string
4{
5 if ($genero === "pop") {
6 return "Dua Lipa.";
7 } elseif ($genero === "reg") {
8 return "Bad Bunny.";
9 } else {
10 return "De eso no conozco";
11 }
12}
13

6. Carpeta « tests »

A. tests / RecomiendaTest.php

1<?php
2
3use PHPUnit\Framework\TestCase;
4
5require_once __DIR__ . "/../src/recomienda.php";
6
7final class RecomiendaTest extends TestCase
8{
9 public function testPop()
10 {
11 $this->assertEquals("Dua Lipa.", recomienda("pop"), "Probando pop");
12 }
13 public function testReg()
14 {
15 $this->assertEquals("Bad Bunny.", recomienda("reg"), "Probando reg");
16 }
17 public function testReg2()
18 {
19 $this->assertEquals("Daddy Yankee.", recomienda("reg"), "Probando reg 2");
20 }
21}
22

7. composer.json

1{
2 "require-dev": {
3 "phpunit/phpunit": "^10"
4 }
5}

8. composer.lock

1-- No se muestra eñ contenido de este archivo --

9. Carpeta « vendor »

A. vendor / -- No se muestra el contenido de esta carpeta --

1

D. Jasmine

Versión para imprimir.

1. introducción

  • Las pruebas de unidad permiten asegurar que una parte del código cumple correctamente con sus funciones.

  • A continuación se muestra como realizar pruebas del cliente con Jasmine.

  • En la práctica, los sistemas deben pasar todas las pruebas. En este ejemplo se fallan algunas.

2. Salida de las pruebas realizadas

Esta salida muestra algunos fallos para que te des cuenta como se ven. En la práctica, todas la pruebas deben aprobarse.


> nodejs@1.0.0 test
> jasmine

Randomized with seed 87173
Started
.F.

Failures:
1) recomienda reg2
  Message:
  Expected 'Bad Bunny.' to be 'Daddy Yankee.'.
  Stack:
        at <Jasmine>
        at UserContext.<anonymous> (file:///D:/gilpg/Documents/Sitios/awoas/jasminewin/spec/recomiendaSpec.js:6:45)
        at <Jasmine>

3 specs, 1 failure
Finished in 0.012 seconds
Randomized with seed 87173 (jasmine --random=true --seed=87173)

3. Hazlo funcionar

  1. Este ejercicio usa la librería Jasmine para JavaScript. Puedes profundizar en este tema en la URL https://jasmine.github.io/

  2. Descarga el archivo /src/jasmine.zip y descompáctalo.

  3. Abre la carpeta descompactada con Visual Studio Code.

  4. Edita los archivos que desees. El código a probar se coloca en la carpeta src y las pruebas en la carpeta spec.

  5. El proyecto ya contiene la carpeta node_modules y el archivo package-lock.json, pero si quieres crearlos, debes seguir estos pasos:

    1. Instala Node.js desde https://nodejs.org/en.

    2. Desde Visual Studio Code abre una terminal y usa el siguiente comando para inicializar el proyecto de node:
      npm init -y

    3. Edita el archivo packege.json e inserta en la linea 6, sin borrar ni sobreescribir nada, la siguiente línea
      "type": "module",

    4. En el mismo archivo packege.json cambia la línea que dice "test" a que diga:
      "test": "jasmine"

    5. Instala Jasmine en el proyecto con la orden:
      npm install --save-dev jasmine

    6. Inicializa Jasmine con la orden:
      npx jasmine init

  6. Ejecuta las pruebas con la orden:
    npm run test

4. Archivos

Haz clic en los triángulos para expandir las carpetas

5. Carpeta « src »

A. src / recomienda.js

1/**
2 * @param {string} genero
3 */
4export function recomienda(genero) {
5 if (genero === "pop") {
6 return "Dua Lipa."
7 } else if (genero === "reg") {
8 return "Bad Bunny."
9 } else {
10 return "De eso no conozco."
11 }
12}

6. Carpeta « spec »

A. spec / recomiendaSpec.js

1import { recomienda } from '../src/recomienda.js'
2
3describe("recomienda", () => {
4 it("pop", () => expect(recomienda("pop")).toBe("Dua Lipa."))
5 it("reg", () => expect(recomienda("reg")).toBe("Bad Bunny."))
6 it("reg2", () => expect(recomienda("reg")).toBe("Daddy Yankee."))
7})

B. Carpeta « spec / support »

1. spec / support / jasmine.json

1{
2 "spec_dir": "spec",
3 "spec_files": [
4 "**/*[sS]pec.?(m)js"
5 ],
6 "helpers": [
7 "helpers/**/*.?(m)js"
8 ],
9 "env": {
10 "stopSpecOnExpectationFailure": false,
11 "random": true
12 }
13}
14

7. package.json

1{
2 "name": "nodejs",
3 "version": "1.0.0",
4 "description": ,
5 "main": "index.js",
6 "type": "module",
7 "scripts": {
8 "test": "jasmine"
9 },
10 "keywords": [],
11 "author": ,
12 "license": "ISC",
13 "dependencies": {
14 "@types/node": "^18.0.6",
15 "node-fetch": "^3.2.6"
16 },
17 "devDependencies": {
18 "jasmine": "^5.1.0"
19 }
20}
21

8. package-lock.json

1-- No se muestra el contenido de este archivo. --

9. Carpeta « node_modules »

A. node_modules / -- No se muestra el contenido de esta carpeta --

1

10. jsconfig.json

  • Este archivo ayuda a detectar errores en los archivos del proyecto.

  • Lo utiliza principalmente Visual Studio Code.

  • No se explica aquí su estructura, pero puede encontrarse la explicación de todo en la documentación del sitio de Visual Studio Code.

1{
2 "compilerOptions": {
3 "checkJs": true,
4 "strictNullChecks": true,
5 "target": "ES6",
6 "module": "Node16",
7 "moduleResolution": "Node16",
8 "lib": [
9 "ES2017",
10 "WebWorker",
11 "DOM"
12 ]
13 }
14}

E. Prueba de los servicios

F. Pruebas de la app

G. Resumen