Tartalomjegyzék

< Példák

Jasmine - Triangle osztály tesztje

Bevezetés

Ez a mintafeladat egy ECMAScript modul tesztelését mutatja be.

Könyvtárszerkezet és fájlok

app01/
  |-spec/
  |  `-support/
  |      `-jasmine.json
  |-src/
  |  |-css/
  |  |  `-style.css
  |  |-js/
  |  |  |-app.js
  |  |  `-triangle.js
  |  `-index.html
  |-test/
  |  `-triangle.spec.js
  |-.gitignore
  |-bs-config.json
  `-package.json

Az src

src/js/triangle.js
export class Triangle {
    constructor() {
        this.area = 0;
    }
    calcArea(base, height) {
        return base * height / 2;
    }
}
src/js/app.js
import { Triangle } from "./triangle.js";
 
const triangle = new Triangle();
var area = triangle.calcArea(30, 35);
 
console.log("Terület: " + area);
src/index.html
<!DOCTYPE html>
<html lang="hu">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Háromszög</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
    <div class="container">
        <h1>Háromszög</h1>
    </div>
 
    <script type="module" src="js/app.js"></script>
 
</body>
</html>

package.json

package.json
{
  "name": "app01",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "type": "module",
  "scripts": {
    "test": "jasmine",
    "start": "npx lite-server"
  },
  "devDependencies": {
    "lite-server": "^2.6.1"
    "jasmine": "^4.5.0"
  },
}

Szükség van a „type”: „module” beállításra is ECMAScript modul tesztelésére.

A teszt

spec/support/jasmine.json
{
  "spec_dir": "test",
  "spec_files": [
    "**/*[sS]pec.?(m)js"
  ],
  "helpers": [
    "helpers/**/*.?(m)js"
  ],
  "env": {
    "stopSpecOnExpectationFailure": false,
    "random": true
  }
}
test/triangle.spec.js
import { Triangle } from "../src/js/triangle.js";
 
describe("Mintatesztek", () => {
    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();
    })
})

Fontos, hogy az import sor végén a triangle.js fájlnévnek kötelező a .js kiterjesztés megadása, szemben például a jest tesztelő eszközzel.