[[oktatas:web:javascript:javascript_teszt|< JavaScript teszt]] ====== JavaScript teszt - Mocha ====== * **Szerző:** Sallai András * Copyright (c) 2021, Sallai András * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== A Mocha ===== NodeJS és böngészőben használható tesztelő keretrendszer JavaScript számára. * https://mochajs.org/ (2021) ===== Telepítés ===== Npm globálisan: npm install --global mocha vagy a projekt számára fejlesztéshez: npm install --save-dev mocha ===== Ellenőrzés ===== Ha globálisan van telepítve: mocha --version Ha csak helyben van: npx mocha --version ===== Kezdés ===== A projekt gyökérkönyvtárában készítsünk egy test nevű könyvtárat, amiben létrehozunk egy valami.js nevű tesztet: mkdir test $EDITOR test/valami.js A $EDITOR a kedvenc szerkesztőnket jelenti. A szerkesztőben: describe('Valamik', function() { it('valami', function() { //teszt jön ide }); }); ==== Futtatás paranccsal ==== A futtatható mocha parancs a **node_modules/mocha/bin/mocha** útvonalon található. Futtatható az útvonal megadásával: ./node_modules/mocha/bin/mocha Vagy: npx mocha ===== Async teszt ===== A szerkesztőben: describe('Valamik', function() { it('valami', function(done) { done(); }); }); ===== Tömb tartalma ===== var assert = require('assert'); describe('Tömb', function() { describe('#indexOf()', function() { it('Ha nincs benne 6 -1 kell legyen az eredmény', function() { assert.equal([1, 2, 3, 4, 5].indexOf(6), -1); }); }); }); ==== NodeJS feladat készítése ==== A futtatáshoz használhatjuk az npm parancsot, ha a package.json fájlban írok hozzá egy feladatot (task, script): "scripts": { "test": "mocha" } Futtatás: npm test ===== Böngészőből ===== Mocha
===== Kizáró tesztek ===== Csak az "egy" fusson, az only() függvénnyel van beállítva: describe('valami', () => { it.only('egy', () => { }); it('ketto', () => { }); }); Az "egy" ne fusson, a skip() függvénnyel van beállítva: describe('valami', () => { it.skip('egy', () => { }); it('ketto', () => { }); }); Az xit használata: describe('valami', () => { xit('egy', () => { }); it('ketto', () => { }); }); ===== Horgok ===== describe('horgok', function () { before(function () { // egyszer lefut az első teszt előtt a blokkban }); after(function () { // egyszer lefut az utolsó teszt után a blokkban }); beforeEach(function () { // minden teszt előtt lefut a blokkban }); afterEach(function () { // minden teszt után lefut a blokkban }); //tesztesetek ... }); ===== Böngészőben futó függvény tesztelése ===== A HTML oldalon és a package.json fájlban is be kell állítani a type értéket module-ra. function calcArea(base, height) { return 0.5 * base * height; } export {calcArea} import assert from 'assert'; import { calcArea } from '../src/triangle.js'; describe('A calcArea() függvény tesztje', function() { it('Ha a bemenet 30, 35, eredmény 525', function() { const base = 30; const height = 35; const area = calcArea(base, height); // expect(area).to.equal(525); assert.equal(area, 525); }); }); ===== chai ===== * https://www.chaijs.com/ A chai segítségével assert típusú állítások helyett expect típusúakat használhatunk. ===== Linkek ===== * https://mochajs.org/ (2023) * https://devhints.io/chai (2023)