Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core
Das Modul agorum.dev enthält eine Testsuite für die Durchführung von automatisierten Tests, etwa für Workflows, Aktive Ordner und mehr. Eine testgetriebene Entwicklung (test driven development) verbessert die Qualität von Code.
Mithilfe des Moduls können Sie:
Einen Test definieren Sie über ein Test-Skript auf eine von zwei Arten:
Eigene Dateien/Administration/customers/<Konfigurationsprojekt>
Hinweis: Sie können das Skript an dieser Stelle nicht starten, sondern nur im Rahmen der Testsuite.
Eigene Dateien/Administration/customers/<Konfigurationsprojekt>/test/js
Erstellen Sie einen Test über die Kopfleiste, müssen Sie das Konfigurationsprojekt manuell wählen.
Hinweis: Sie können das Skript an dieser Stelle nicht starten, sondern nur im Rahmen der Testsuite.
Eigene Dateien/Administration/customers/<Konfigurationsprojekt>/test/js
Sie führen einen Test über die Testsuite aus, um den Test aufzurufen. Die Testsuite öffnen Sie in Ihrem Konfigurationsprojekt.
Eigene Dateien/Administration/customers/<Konfigurationsprojekt>
Tipp: Klicken Sie innerhalb Ihres Konfigurationsprojekts ein bereits abgelegtes Test-Skript oder einen Ordner mit Test-Skripts mit der rechten Maustaste an, öffnen Sie die Testsuite nur für dieses eine Skript oder für die Skripte, die sich in diesem Ordner befinden.
Sie können innerhalb der Testsuite in der Baumstruktur einen Test direkt bearbeiten.
Sie können einen Test für einen bereits gelaufenen Workflow automatisch erzeugen, um einen Workflow auf Korrektheit zu prüfen.
Hinweis: Das Skript enthält die JavaScript-Bibliotheken:
• common/objects
• common/beans
• agorum.dev/js/lib/delta
• agorum.dev/js/lib/workflow
• agorum.dev/js/lib/assert
• agorum.dev/js/lib/finder
• agorum.dev/js/lib/cleaner
Eigene Dateien/Administration/customers/<Konfigurationsprojekt>/test/js
Hinweise:
• Das System führt den Test stets mit dem Test-Anhang test.pdf durch, wenn Sie das gespeicherte Test-Skript starten.
• Sie müssen den Test-Anhang test.pdf sowie den Ordner pdf manuell erstellen unter:
Eigene Dateien/Administration/customers/<Konfigurationsprojekt>/test/pdf
Für manche Tests benötigen Sie Metadaten, damit Sie Tests vollständig ausführen können. Die Metadaten eines Objekts können Sie über das Kontextmenü auslesen.
/* globals describe, it, before, after, beforeEach, afterEach */ let objects = require('common/objects'); let assert = require('/agorum/roi/customers/agorum.dev/js/lib/assert'); // desribe a group of tests describe('Test-Group', () => { before('before', () => { // is called before the first "it" }); after('after', () => { // is called after the last "it" // may be used to clean up }); beforeEach('before each', () => { // is called before each "it" }); afterEach('after each', () => { // is called after each "it" }); // define your first test it('Test 1', cx => { // Put in your test // wait for anything let result = cx.wait('Describe, what you are waiting for').seconds(10).for(() => { // return what you found return 'anything'; }); // define checkpoints, that are shown as progress in the test suite cx.checkpoint('Checkpoint 1'); // assert the result (should be "anything") assert('Check with isEqual').isEqual(result, 'anything'); }); // define your second test it('Test 2', () => { // ... // if the test returns anything, it is marked as failed // you can also throw an error to mark it as failed }); });
Definiert eine Test-Gruppe.
Definiert den Test an sich und führt ein oder mehrere Tests durch.
it('Test mit promise', cx => { return new Promise(resolve => { // ... etwas Asynchrones tun ... resolve(); }); }); // oder it('Test mit fork', cx => { // "fork" in der Regel nicht notwendig, da die Tests automatisch in eigenen Threads laufen return aguila.fork(() => { // ... etwas Asynchrones tun ... }); });
Ignoriert alle anderen normalen decribes, sofern mindestens ein describe.only (statt describe) existiert.
Das System betrachtet beim Ausführen der Tests nur noch diejenigen Gruppen, die only sind.
Ignoriert alle anderen normalen it, sofern mindestens ein it.only (statt it) existiert, und führt nur die it.only aus.
Ignoriert die aufgeführte Gruppe.
Ignoriert den aufgeführten Test.
Wird ausgeführt vor dem ersten it innerhalb dieser Gruppe.
Verwenden Sie before, um Testdaten vorzubereiten.
Wird ausgeführt nach dem letzten it innerhalb dieser Gruppe.
Verwenden Sie after, um Testdaten aufzuräumen.
Wird vor jedem einzelnen it innerhalb dieser Gruppe ausgeführt.
Wird nach jedem einzelnen it innerhalb dieser Gruppe ausgeführt.
Stellt einen Kontext innerhalb des Tests dar und kann verwendet werden für:
Setzt einen Checkpoint.
Wartet auf etwas.
cx.wait('Ein sinnvoller Text, worauf hier gewartet wird').seconds(Anzahl Sekunden).for(<Funktion, die im Erfolgsfall etwas zurückliefert>);
Sie können anstatt seconds auch minutes verwenden:
Das System:
Hinweis: Sobald der return-Wert einer truthy-Antwort (NICHT: undefined, false, '') entspricht, wird der wait abgebrochen und das Ergebnis weitergeleitet.
Beispiel 1
Warte maximal 120 Sekunden auf das Erscheinen einer bestimmten Datei in einem Ordner und gib diese Datei zurück:
let folder = objects.find('/agorum/roi/Files/xy'); let file = cx.wait('Datei test.txt in Ordner xy enthalten?').seconds(120).for(() => { return folder.getItem('test.txt'); }); // mit file weiterarbeiten
Beispiel 2
Warte maximal 120 Sekunden, bis ein bestimmtes Objekt in der Suche gefunden wurde, und gib die UUID zurück:
let uuid = cx.wait('Finde Objekt mit prefix_kennung=123').seconds(120).for(() => { let result = objects.query('prefix_kennung:123').limit(1).search('uuid'); if (result && result[0]) return result[0].uuid; }); // mit der uuid weiterarbeiten
Stellt eine Hilfsfunktion zur Prüfung von erwarteten Ergebnissen dar (siehe JavaScript-Bibliothek agorum.dev/js/lib/assert).
Überprüfen, ob eine Datei im korrekten Ordner abgelegt wurde:
assert('Ist korrekt abgelegt').isTruthy(objects.tryFind('</erwarteter Pfad/erwarteter Dateiname.Dateiendung>'));
Überprüfen, ob eine Datei im korrekten Ordner abgelegt wurde (mit Verweis auf den Objektnamen):
assert('Ist korrekt abgelegt').isTruthy(objects.tryFind('</erwarteter Pfad/'> + obj.name));