Lua Academy · Les

describe- en it-blokken

Structureer een testsuite.

Les 2 van 413 stappen

describe- en it-blokken is een gratis Lua Academy-les op CoddyKit. Dit is les 2 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.

Structuur van een specificatie

busted organiseert tests met twee kernfuncties: describe en it. Een describe-blok groepeert gerelateerde tests en elk it-blok is één testgeval.

Deze structuur komt uit gedragsgestuurde ontwikkeling en leest als gewone taal.

describe("Stack", function()
  it("starts empty", function()
    assert.are.equal(0, Stack.new():size())
  end)
end)

Het describe-blok

describe neemt een naamtekenreeks en een functie aan. De naam moet de eenheid of functionaliteit identificeren die je test, zoals een module of klasse.

Alles binnen de functie hoort bij die groep. De naam verschijnt in de testuitvoer om de resultaten te ordenen.

describe("calculator", function()
  -- tests live here
end)

Het it-blok

Elk it-blok beschrijft één specifiek gedrag. De tekenreeks moet de zin aanvullen die met describe begint.

Samen gelezen vormen "rekenmachine" en "telt twee getallen op" een duidelijke specificatie van de bedoeling.

describe("calculator", function()
  it("adds two numbers", function()
    assert.are.equal(5, calc.add(2, 3))
  end)
end)

describe-blokken nesten

Je kunt describe-blokken nesten om context uit te drukken. Een binnenste blok kan een specifieke methode of een bijzondere voorwaarde beschrijven.

Nesten houdt gerelateerde gevallen bij elkaar en levert leesbare uitvoer met inspringing op.

describe("List", function()
  describe("push", function()
    it("adds an item", function()
      assert.are.equal(1, list:push("a"):size())
    end)
  end)
end)

Instellen met before_each

before_each voert vóór elke it in zijn blok een functie uit. Gebruik dit om nieuwe testgegevens op te bouwen, zodat tests geen toestand delen.

Zo blijft elke test geïsoleerd. Een wijziging in de ene test kan niet naar de volgende lekken.

describe("Stack", function()
  local s
  before_each(function()
    s = Stack.new()
  end)
  it("pushes", function()
    s:push(1)
    assert.are.equal(1, s:size())
  end)
end)

Opruimen met after_each

after_each wordt na elke test uitgevoerd. Gebruik dit om bronnen zoals tijdelijke bestanden, open verbindingen of globale toestand op te ruimen.

Door instellen en opruimen te combineren, zorg je ervoor dat de omgeving tussen tests wordt teruggezet.

after_each(function()
  os.remove("temp.db")
end)

setup en teardown

busted biedt ook setup en teardown. Deze worden eenmaal per describe-blok uitgevoerd in plaats van eenmaal per test.

Gebruik ze voor dure eenmalige bewerkingen, zoals het openen van een gedeelde verbinding, wanneer instellen per test verspilling zou zijn.

describe("db", function()
  setup(function()
    db = connect()
  end)
  teardown(function()
    db:close()
  end)
end)

Tests in afwachting

Soms wil je een test noteren die je nog niet hebt geschreven. Roep pending aan met een beschrijving of schrijf een it-blok zonder functie.

busted rapporteert deze tests als in afwachting in plaats van als geslaagd of mislukt, zodat je eraan wordt herinnerd ze af te maken.

it("handles unicode", function()
  pending("not implemented yet")
end)

Tests selecteren en uitsluiten

Tijdens het opsporen van fouten kun je je richten op een deel van de tests. Met een label via --tags op de opdrachtregel of met hulpmiddelen van busted kun je alleen de relevante tests uitvoeren.

Zo hoef je niet de hele testsuite uit te voeren terwijl je één falend onderdeel onderzoekt.

-- run only tests tagged 'fast'
-- busted --tags=fast

Naamgevingsconventies

Goede namen maken fouten vanzelf duidelijk. Begin de naam voor describe met het onderwerp en die voor it met een werkwoord dat het gedrag beschrijft.

Vermijd vage namen zoals "werkt" of "test1". Een mislukte test moet lezen als een foutrapport waar je iets mee kunt doen.

describe("parser", function()
  it("rejects malformed input", function()
    assert.has_error(function() parser.parse("{") end)
  end)
end)

Alles samenbrengen

Een volledige specificatie combineert describe-groepen, before_each-instellingen en gerichte it-gevallen. Deze basisstructuur kan meegroeien van één test tot honderden.

Houd blokken klein en richt elk it-geval op één gedrag voor de duidelijkste uitvoer.

describe("Account", function()
  local acc
  before_each(function() acc = Account.new(100) end)
  it("withdraws funds", function()
    acc:withdraw(40)
    assert.are.equal(60, acc.balance)
  end)
end)

Korte controle

Test je begrip van de blokstructuur van busted.

Samenvatting

describe groepeert gerelateerde tests en it definieert één geval, zodat het geheel als een specificatie leest. Nest describe-blokken om context uit te drukken.

Gebruik before_each en after_each voor isolatie per test, en setup en teardown voor werk dat eenmaal per blok wordt uitgevoerd. Markeer onafgemaakt werk met pending.

Gratis beginnen

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 “describe- en it-blokken” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “describe- en it-blokken”, 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 “describe- en it-blokken”?

Structureer een testsuite. 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 2 van 4.

Hoe lang duurt de les “describe- en it-blokken”?

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.

Alle lessen in deze cursus

  1. Waarom testen?
  2. describe- en it-blokken
  3. Assertions
  4. Mocks en spies
← Terug naar Lua Academy