D. Jasmine

Versión para imprimir.

1. introducción

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 »

Versión para imprimir.

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 »

Versión para imprimir.

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 »

Versión para imprimir.

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

1

10. jsconfig.json

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}