Assertions
Udtryk den forventede adfærd.
Assertions er en gratis Lua Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lua Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lua Academy-kurset indeholder 4 lektioner i alt.
Hvad assertions gør
En assertion er hjertet i en test. Den fastslår et faktum, der skal være sandt. Hvis det er tilfældet, fortsætter testen. Ellers registrerer busted en fejl med en nyttig meddelelse.
busted bruger biblioteket luassert, som du tilgår via den globale assert-tabel.
assert.are.equal(4, 2 + 2)are.equal
assert.are.equal kontrollerer lighed med operatoren ==. Det første argument er den forventede værdi, og det andet er den faktiske værdi.
Det fungerer for tal, strenge og boolske værdier, men for tabeller sammenligner det identitet, ikke indhold.
assert.are.equal("hello", greet())
assert.are.equal(10, count)are.same for tabeller
Brug assert.are.same til at sammenligne tabelindhold grundigt. Den kontrollerer rekursivt, at to tabeller indeholder ens værdier.
Brug same til datastrukturer og equal til primitive værdier eller identitetskontroller.
assert.are.same({1, 2, 3}, split("1,2,3"))
assert.are.same({x = 1}, point)Sandhedsværdi
assert.is_true og assert.is_false kontrollerer, om værdien præcist er en boolesk værdi. assert.is_truthy accepterer alt, der hverken er nil eller false.
Vælg den strikse variant, når du specifikt forventer et boolesk resultat.
assert.is_true(user.active)
assert.is_truthy(find("x"))
assert.is_false(list:isEmpty())Kontrol af nil
assert.is_nil kontrollerer, at en værdi er nil, og assert.is_not_nil kontrollerer, at den er til stede. De bruges ofte ved kontrol af opslag.
De gør hensigten tydeligere end at sammenligne med nil ved hjælp af equal.
assert.is_nil(map["missing"])
assert.is_not_nil(map["found"])Negation med is_not
De fleste assertions kan negeres ved at indsætte is_not eller bruge formen are_not. Det udtrykker, at noget skal være forskelligt.
For eksempel lykkes assert.are_not.equal, når de to værdier er forskellige.
assert.are_not.equal(1, 2)
assert.is_not_nil(result)Test af fejl
Hvis du vil kontrollere, at kode udløser en fejl, skal du pakke den ind i en funktion og give den til assert.has_error. busted kalder funktionen og bekræfter, at den kastede en fejl.
Du kan også kontrollere fejlmeddelelsen ved at give en forventet streng som det andet argument.
assert.has_error(function()
withdraw(-5)
end, "amount must be positive")has_no.errors
Den modsatte kontrol er assert.has_no.errors. Den lykkes, når den indpakkede funktion kører uden at udløse en fejl.
Det er nyttigt til at bekræfte, at et kald på den vellykkede sti ikke går ned, selv når du ikke kontrollerer returværdien.
assert.has_no.errors(function()
parse("valid input")
end)Tilpassede fejlmeddelelser
Du kan føje en meddelelse til de fleste assertions for at tydeliggøre fejl. Giv den som et ekstra argument, så rapporten forklarer forventningen.
Tydelige meddelelser gør en uigennemsigtig fejl nem at handle på.
assert.is_true(ok, "login should succeed")Matchning med modifikatorer
luassert leverer modifikatorer og matchere til mere avancerede kontroller. For eksempel tester assert.matches en streng op mod et Lua-mønster.
Det er praktisk, når en kontrol af nøjagtig lighed er for streng til output, der kan variere.
assert.matches("%d%d%d%d", get_year())
assert.matches("error", log_line, 1, true)Valg af den rigtige assertion
Vælg den mest specifikke assertion for at gøre koden tydelig. Brug same til tabeller, equal til primitive værdier, has_error til fejl og sandhedsværdikontroller til booleske værdier.
Specifikke assertions giver bedre fejlmeddelelser, hvilket gør fejlfinding hurtigere.
describe("queue", function()
it("dequeues in order", function()
assert.are.same({"a", "b"}, q:drain())
end)
end)Hurtigt tjek
Test din forståelse af busted-assertions.
Opsummering
luassert leverer busteds assert-tabel. Brug are.equal til primitive værdier, are.same til dyb sammenligning af tabeller og sandhedsværdi- eller nil-kontroller, når det er relevant.
Kontrollér fejl med has_error og succes med has_no.errors. Negér med is_not, og tilføj meddelelser for tydeligere rapporter.
Lær Lua med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 40
- Lektioner
- 159
Ofte stillede spørgsmål
Er lektionen “Assertions” gratis?
Ja — alle 3 lektioner i læringssporet Lua Academy, inklusive “Assertions”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lua Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Assertions”?
Udtryk den forventede adfærd. Du øver dig i Lua Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Lua Academy?
Der kræves ingen tidligere erfaring. Lua Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Assertions”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Lua Academy-lektion?
Ja. Alle Lua Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.