0Pricing
Lua Academy · Lektion

Assertions

Formulieren Sie erwartetes Verhalten.

Assertions ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Was Assertions leisten

Eine Assertion bildet das Herzstück eines Tests. Sie stellt eine Tatsache fest, die wahr sein muss. Ist sie wahr, wird der Test fortgesetzt. Andernfalls verzeichnet busted einen Fehler mit einer hilfreichen Meldung.

busted verwendet die Bibliothek luassert, auf die über die globale Tabelle assert zugegriffen wird.

assert.are.equal(4, 2 + 2)

are.equal

assert.are.equal prüft die Gleichheit mit dem Operator ==. Das erste Argument ist der erwartete Wert, das zweite der tatsächliche Wert.

Das funktioniert für Zahlen, Strings und boolesche Werte. Bei Tabellen wird jedoch die Identität und nicht der Inhalt verglichen.

assert.are.equal("hello", greet())
assert.are.equal(10, count)

are.same für Tabellen

Um Tabelleninhalte tiefgehend zu vergleichen, verwenden Sie assert.are.same. Dabei wird rekursiv geprüft, ob zwei Tabellen gleiche Werte enthalten.

Verwenden Sie same für Datenstrukturen und equal für primitive Werte oder Identitätsprüfungen.

assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)

Truthiness

assert.is_true und assert.is_false prüfen auf die exakt passenden booleschen Werte. assert.is_truthy akzeptiert alles, was weder nil noch false ist.

Wählen Sie die strikte Variante, wenn Sie ausdrücklich ein boolesches Ergebnis erwarten.

assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())

Nil-Prüfungen

assert.is_nil prüft, ob ein Wert nil ist, und assert.is_not_nil, ob er vorhanden ist. Das ist beim Prüfen von Abfragen häufig nützlich.

Damit wird die Absicht klarer, als wenn Sie den Wert mit equal mit nil vergleichen.

assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])

Negieren mit is_not

Die meisten Assertions können Sie negieren, indem Sie is_not einfügen oder die Form are_not verwenden. Damit drücken Sie aus, dass sich etwas unterscheiden muss.

Zum Beispiel ist assert.are_not.equal erfolgreich, wenn sich die beiden Werte unterscheiden.

assert.are_not.equal(1, 2)
assert.is_not_nil(result)

Fehler testen

Um zu prüfen, ob Code einen Fehler auslöst, verpacken Sie ihn in eine Funktion und übergeben Sie diese an assert.has_error. busted ruft die Funktion auf und bestätigt, dass sie einen Fehler ausgelöst hat.

Sie können auch die Fehlermeldung prüfen, indem Sie als zweites Argument eine erwartete Zeichenfolge übergeben.

assert.has_error(function()
  withdraw(-5)
end, "amount must be positive")

has_no.errors

Die umgekehrte Prüfung ist assert.has_no.errors. Sie ist erfolgreich, wenn die verpackte Funktion ausgeführt wird, ohne einen Fehler auszulösen.

Das ist nützlich, um zu bestätigen, dass ein erfolgreicher Aufruf nicht abstürzt, selbst wenn Sie den Rückgabewert nicht prüfen.

assert.has_no.errors(function()
  parse("valid input")
end)

Benutzerdefinierte Fehlermeldungen

Sie können den meisten Assertions eine Meldung hinzufügen, um Fehler zu erläutern. Übergeben Sie sie als zusätzliches Argument, damit der Bericht die Erwartung erklärt.

Klare Meldungen machen aus einem kryptischen Fehler einen, aus dem sich konkrete Maßnahmen ableiten lassen.

assert.is_true(ok, "login should succeed")

Abgleichen mit Modifikatoren

luassert stellt Modifikatoren und Matcher für umfangreichere Prüfungen bereit. Mit assert.matches können Sie beispielsweise eine Zeichenfolge anhand eines Lua-Musters prüfen.

Das ist praktisch, wenn eine exakte Gleichheitsprüfung für variable Ausgaben zu strikt wäre.

assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)

Die richtige Assertion wählen

Wählen Sie für mehr Klarheit die spezifischste Assertion. Verwenden Sie same für Tabellen, equal für primitive Werte, has_error für Fehler und Truthiness-Prüfungen für boolesche Werte.

Spezifische Assertions erzeugen bessere Fehlermeldungen und beschleunigen dadurch die Fehlersuche.

describe("queue", function()
  it("dequeues in order", function()
    assert.are.same({"a", "b"}, q:drain())
  end)
end)

Schnelltest

Testen Sie Ihr Verständnis von busted-Assertions.

Zusammenfassung

luassert stellt busteds assert-Tabelle bereit. Verwenden Sie are.equal für primitive Werte, are.same für den tiefgehenden Vergleich von Tabellen und je nach Bedarf Truthiness- oder Nil-Prüfungen.

Prüfen Sie Fehler mit has_error und erfolgreiche Ausführungen mit has_no.errors. Negieren Sie Prüfungen mit is_not und fügen Sie Meldungen für klarere Berichte hinzu.

Häufig gestellte Fragen

Ist die Lektion „Assertions“ kostenlos?

Ja — der vollständige Text von „Assertions“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Assertions“?

Formulieren Sie erwartetes Verhalten. Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Lua Academy zu starten?

Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Assertions“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?

Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum testen
  2. describe- und it-Blöcke
  3. Assertions
  4. Mocks und Spies
← Zurück zu Lua Academy