78 lines
2.5 KiB
JavaScript
78 lines
2.5 KiB
JavaScript
// Hilfsfunktion zur Rejection-Prüfung
|
|
async function pruefeReject(promise, expectedMsg, beschreibung) {
|
|
let threw = false;
|
|
let caughtErr = null;
|
|
try {
|
|
await promise;
|
|
} catch (err) {
|
|
threw = true;
|
|
caughtErr = err;
|
|
if (expectedMsg && !String(err && (err.message || err)).includes(expectedMsg)) {
|
|
throw new Error(`${beschreibung}: Erwartete Fehlermeldung "${expectedMsg}", aber erhalten: "${err ? err.message : err}"`);
|
|
}
|
|
}
|
|
if (!threw) {
|
|
throw new Error(`${beschreibung}: Promise sollte abgewiesen werden (reject), wurde aber erfolgreich aufgelöst.`);
|
|
}
|
|
}
|
|
|
|
// 1. Test: verzoegereAusfuehrung
|
|
const erg1 = await verzoegereAusfuehrung(20, "Erfolg 20ms");
|
|
assert.strictEqual(erg1, "Erfolg 20ms", "verzoegereAusfuehrung liefert falschen Wert nach Ablauf des Timers");
|
|
|
|
// 2. Test: pruefeZahlGroesserNull bei positiver Zahl
|
|
const erg2 = await pruefeZahlGroesserNull(42);
|
|
assert.strictEqual(erg2, 42, "pruefeZahlGroesserNull(42) sollte mit 42 resolven");
|
|
|
|
// 3. Test: pruefeZahlGroesserNull bei 0 und negativer Zahl
|
|
await pruefeReject(
|
|
pruefeZahlGroesserNull(-5),
|
|
"Zahl muss größer als 0 sein",
|
|
"pruefeZahlGroesserNull(-5)"
|
|
);
|
|
await pruefeReject(
|
|
pruefeZahlGroesserNull(0),
|
|
"Zahl muss größer als 0 sein",
|
|
"pruefeZahlGroesserNull(0)"
|
|
);
|
|
|
|
// 4. Test: ladeBenutzerProfil mit gültiger ID
|
|
const profil = await ladeBenutzerProfil(101);
|
|
assert.deepStrictEqual(
|
|
profil,
|
|
{ id: 101, name: "Benutzer_101", status: "aktiv" },
|
|
"ladeBenutzerProfil(101) liefert falsches Profil-Objekt"
|
|
);
|
|
|
|
// 5. Test: ladeBenutzerProfil mit ungültiger ID
|
|
await pruefeReject(
|
|
ladeBenutzerProfil(0),
|
|
"Ungültige User-ID",
|
|
"ladeBenutzerProfil(0)"
|
|
);
|
|
await pruefeReject(
|
|
ladeBenutzerProfil(-10),
|
|
"Ungültige User-ID",
|
|
"ladeBenutzerProfil(-10)"
|
|
);
|
|
|
|
// 6. Test: ladeAlleDatenQuellen mit zwei erfolgreichen Promises (Promise.all)
|
|
const pA = verzoegereAusfuehrung(15, "Sensordaten Alpha");
|
|
const pB = verzoegereAusfuehrung(10, "Sensordaten Beta");
|
|
const alleQuellen = await ladeAlleDatenQuellen(pA, pB);
|
|
assert.deepStrictEqual(
|
|
alleQuellen,
|
|
["Sensordaten Alpha", "Sensordaten Beta"],
|
|
"ladeAlleDatenQuellen sollte alle Ergebnisse im Array zusammenfassen"
|
|
);
|
|
|
|
// 7. Test: ladeAlleDatenQuellen mit einem abgewiesenen Promise
|
|
const pGut = verzoegereAusfuehrung(10, "Gute Daten");
|
|
const pSchlecht = pruefeZahlGroesserNull(-100);
|
|
await pruefeReject(
|
|
ladeAlleDatenQuellen(pGut, pSchlecht),
|
|
"Zahl muss größer als 0 sein",
|
|
"ladeAlleDatenQuellen mit abgewiesenem Promise"
|
|
);
|
|
|
|
console.log("✅ Alle 7 Asynchronitäts- und Promise-Tests in JS 05 erfolgreich bestanden!");
|