Tartalomjegyzék

< JavaScript teszt

JavaScript teszt - Mocha

A Mocha

Node.js és böngészőben használható tesztelő keretrendszer JavaScript számára.

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:

test/valami.js
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:

test/valami.js
describe('Valamik', function() {
    it('valami', function(done) {
        done();
    });
});

Tömb tartalma

test/test.js
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):

package.json
"scripts": {
  "test": "mocha"
}

Futtatás:

npm test

Böngészőből

test/index.html
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>Mocha</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="https://unpkg.com/mocha/mocha.css" />
  </head>
  <body>
    <div id="mocha"></div>
 
    <script src="https://unpkg.com/chai/chai.js"></script>
    <script src="https://unpkg.com/mocha/mocha.js"></script>
 
    <script class="mocha-init">
      mocha.setup('bdd');
      mocha.checkLeaks();
    </script>
    <script src="test.app.js"></script>
 
    <script class="mocha-exec">
      mocha.run();
    </script>
  </body>
</html>

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.

src/triangle.js
function calcArea(base, height) {
    return 0.5 * base * height;
}
export {calcArea}
test/app.spec.js
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

A chai segítségével assert típusú állítások helyett expect típusúakat használhatunk.

Linkek