[[oktatas:web:javascript:javascript_teszt|< JavaScript teszt]] ====== JavaScript teszt - Jest ====== * **Szerző:** Sallai András * Copyright (c) 2021, Sallai András * Szerkesztve: 2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Webhely ===== A Jest egy JavaScript tesztelő keretrendszer, ami az egyszerűségre törekszik. Webhely: * https://jestjs.io/ ===== Telepítés ===== npm install --save-dev jest ===== Bejegyzés a package.json fájlba ===== "scripts": { "test": "jest", }, ECMAScript modulok esetén: "type": "module", "scripts": { "test": "node --experimental-vm-modules node_modules/.bin/jest", }, ===== Teszt létrehozása ===== Tetszőleges könyvtárban hozzunk létre egy **.spec.js** vagy egy **.test.js** kiterjesztésű fájlt. A könyvtár neve célszerűen lehet test projekt01/ `-test/ `-valami.spec.js projekt01/ `-test/ `-valami.test.js A .spec.js és a .test.js kiterjesztésű fájlt a jest megtalálja. ==== __tests__ ==== A másik lehetőség, hogy egy __tests__ nevű könyvtárba rakjuk a teszteket. Így nem szükséges a spec.js kiterjesztés, elég a js. projekt01/ `-__tests__/ `-valami.js ===== A teszt tartalma ===== Kezdetnek legyen egy teszt, ami 1-t vár és egyet is kap. it('works', () => { expect(1).toBe(1); }); ==== Összeadó ==== Legyen egy sum.js nevű fájl. function sum(num1, num2) { return num1 + num2; } module.exports = sum; const sum = require('./sum'); test('összeadás: 2 + 3 = 5', () => { expect(sum(2, 3)).toBe(5); }); ==== Osztály metódusa, adatagja ==== import { Triangle } from "../src/js/triangle"; it('30, 35-re 525.0 működik', () => { const tri = new Triangle(); expect(tri.calcArea(30, 35)).toBe(525.0); }) it('A calcArea() létezik', () => { const tri = new Triangle(); expect(tri.calcArea()).toBeDefined(); }) it('Az area tulajdonság létezik', () => { const tri = new Triangle(); expect(tri.area).toBeDefined(); }) ===== Teszt futtatása ===== Ha tettünk bejegyzést a package.json fájl scripts szakaszába, a futtatás: npm test ===== describe ===== A teszteket egy describe() függvénnyel csoportosíthatjuk. Első paramétere egy string, második paraméterek egy visszahívó függvény (callback). describe("Artimetika", () => { test("Valami név", () => { // ide jön a teszt }); }); ===== ECMAScript babel csomaggal ===== yarn add --dev jest yarn add --dev babel-jest yarn add --dev @babel/preset-env Részlet a **package.json** fájlból: "type": "module", "scripts": { "test": "jest", }, "jest": { "transform": { "^.+\\.js?$": "babel-jest" } }, Készítsünk egy **.babelrc** nevű fájlt a következő tartalommal: { "presets": ["@babel/preset-env"] } ===== Minta ===== * https://github.com/oktat/jstriangle ===== Források ===== * https://jestjs.io/ (2021) * https://www.valentinog.com/blog/jest/ (2021)