Assertions
Druk verwacht gedrag uit.
Assertions is een gratis Lua Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.
Wat asserties doen
Een assertie is de kern van een test. Ze stelt een feit vast dat waar moet zijn. Als dat zo is, gaat de test verder. Zo niet, dan registreert busted een fout met een nuttige melding.
busted gebruikt de bibliotheek luassert, die je benadert via de globale tabel assert.
assert.are.equal(4, 2 + 2)are.equal
assert.are.equal controleert gelijkheid met de operator ==. Het eerste argument is de verwachte waarde en het tweede de werkelijke waarde.
Dit werkt voor getallen, tekenreeksen en booleans, maar bij tabellen wordt de identiteit vergeleken, niet de inhoud.
assert.are.equal("hello", greet())
assert.are.equal(10, count)are.same voor tabellen
Gebruik assert.are.same om de inhoud van tabellen diepgaand te vergelijken. De functie controleert recursief of twee tabellen gelijke waarden bevatten.
Gebruik same voor gegevensstructuren en equal voor primitieve waarden of identiteitscontroles.
assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)Waarheidswaarde
assert.is_true en assert.is_false controleren op de exacte booleaanse waarden. assert.is_truthy accepteert alles wat niet nil of false is.
Kies de strikte variant wanneer je specifiek een booleaans resultaat verwacht.
assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())Controleren op nil
assert.is_nil controleert of een waarde nil is, en assert.is_not_nil controleert of die aanwezig is. Deze controles zijn gebruikelijk bij het controleren van opzoekacties.
Ze maken de bedoeling duidelijker dan een vergelijking met nil via equal.
assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])Ontkennen met is_not
De meeste asserties kun je ontkennen door is_not in te voegen of de vorm are_not te gebruiken. Hiermee geef je aan dat iets moet verschillen.
assert.are_not.equal slaagt bijvoorbeeld wanneer de twee waarden verschillend zijn.
assert.are_not.equal(1, 2)
assert.is_not_nil(result)Fouten testen
Om te controleren of code een fout veroorzaakt, wikkel je die in een functie en geef je de functie door aan assert.has_error. busted roept de functie aan en bevestigt dat er een fout is opgetreden.
Je kunt ook de foutmelding controleren door als tweede argument een verwachte tekenreeks door te geven.
assert.has_error(function()
withdraw(-5)
end, "amount must be positive")has_no.errors
De tegenovergestelde controle is assert.has_no.errors. Deze slaagt wanneer de ingepakte functie wordt uitgevoerd zonder een fout te veroorzaken.
Dit is handig om te bevestigen dat een geslaagde aanroep niet crasht, zelfs wanneer je de retourwaarde niet controleert.
assert.has_no.errors(function()
parse("valid input")
end)Aangepaste foutmeldingen
Je kunt aan de meeste asserties een melding toevoegen om fouten te verduidelijken. Geef die als extra argument door, zodat het rapport de verwachting uitlegt.
Duidelijke meldingen maken van een cryptieke fout een fout waarmee je verder kunt.
assert.is_true(ok, "login should succeed")Overeenkomsten met aanpassers
luassert biedt aanpassers en patroonvergelijkers voor uitgebreidere controles. assert.matches controleert bijvoorbeeld een tekenreeks aan de hand van een Lua-patroon.
Dit is handig wanneer een exacte gelijkheidscontrole te strikt is voor variabele uitvoer.
assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)De juiste assertie kiezen
Kies voor duidelijkheid de meest specifieke assertie. Gebruik same voor tabellen, equal voor primitieve waarden, has_error voor fouten en controles op waarheidswaarden voor booleaanse waarden.
Specifieke asserties leveren betere foutmeldingen op, waardoor je sneller fouten opspoort.
describe("queue", function()
it("dequeues in order", function()
assert.are.same({"a", "b"}, q:drain())
end)
end)Korte controle
Toets je begrip van busted-asserties.
Samenvatting
luassert levert de tabel assert van busted. Gebruik are.equal voor primitieve waarden, are.same voor een diepe vergelijking van tabellen en controles op waarheidswaarden of nil waar dat passend is.
Controleer fouten met has_error en geslaagde uitvoeringen met has_no.errors. Ontken controles met is_not en voeg meldingen toe voor duidelijkere rapporten.
Leer Lua met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 40
- Lessen
- 159
Veelgestelde vragen
Is de les “Assertions” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “Assertions”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.
Wat leer ik in “Assertions”?
Druk verwacht gedrag uit. Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Lua Academy te beginnen?
Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Assertions”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Lua Academy?
Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.