[[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 =====
Node.js é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);
});
});
});
==== Node.js 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)