Testing

Um verschiedene Tests für den eigenen ioBroker-Adapter vorzubereiten, gibt es das Paket @iobroker/testing. Auf der GitHub-Seite sind einige Beispiele vorhanden.

Dabei werden folgende Typen unterschieden:

  • Package-Tests prüfen, ob das Paket den generellen Anforderungen vom ioBroker-Team entspricht (ähnlich Adapter-Checker)

  • Unit-Tests (laufen ohne einen js-controller) und arbeiten mit Mocks

  • Integration-Tests arbeiten mit einer js-controller-Instanz, welche automatisch gestartet wird

Package-Tests

Diese Tests führen Prüfungen der package.json und der io-package.json durch. Datei test/package.js:

const path = require('path');
const { tests } = require('@iobroker/testing');

// Validate the package files
tests.packageFiles(path.join(__dirname, '..'));

Integration-Tests

Unit-Test

Diese Tests führen allgemeine Unit-Tests durch. Datei test/unit.js:

const path = require('path');
const { tests } = require('@iobroker/testing');

// Run unit tests - See https://github.com/ioBroker/testing for a detailed explanation and further options
tests.unit(path.join(__dirname, '..'));

Tests lokal ausführen

Um alle Tests lokal auszuführen, können diese über npm angestoßen werden.

npm run test:js
npm run test:integration
npm run test:package
npm run test:unit

Damit diese Befehle funktionieren, muss die package.json des Adapters entsprechende Einträge enthalten:

"scripts": {
    "test:js": "mocha --config test/mocharc.custom.json \"{!(node_modules|test)/**/*.test.js,*.test.js,test/**/test!(PackageFiles|Startup).js}\"",
    "test:package": "mocha test/package --exit",
    "test:unit": "mocha test/unit --exit",
    "test:integration": "mocha test/integration --exit",
    "test": "npm run test:js && npm run test:package"
}

GitHub Actions