Modulvita:Homokozó/TG/ScribuntoUnit

message: Ez a modul más modulok egységtesztelésére szolgál. A teszteléshez létre kell hozni egy tesztmodult (ez általában az eredeti modul /tests allapja), ami a tesztelt modul és a ScribuntoUnit felhasználásával ellenőrzi, hogy a tesztelt modul műveletei a várt eredményt adják-e.

message: A tesztmodul egy tesztkészlet (test suite) létrehozásával kezdődik:
 
local SUT = require('Modul:SUT') -- a tesztelni kívánt modul
local ScribuntoUnit = require('Modul:Homokozó/Tgr/ScribuntoUnit') -- később ScribuntoUnit
local suite = ScribuntoUnit:new()
 
Ezután a suite tesztkészlethez hozzá lehet adni az egyes teszteket. Minden olyan függvény, aminek a neve test-tel kezdődik, tesztként lesz kezelve (más függvényeket is tartalmazhat a tesztkészlet, ezeket a ScribuntoUnit figyelmen kívül hagyja, de a tesztek használhatják őket).
 
function suite.testSomeCall()
    self:assertEquals('expected value', SUT.someCall(123))
    self:assertEquals('other expected value', SUT.someCall(456))
end
 
function suite.testSomeOtherCall()
    self:assertEquals('expected value', SUT.someOtherCall(123))
    self:assertEquals('other expected value', SUT.someOtherCall(456))
end
 
A tesztek ellenőrző állításokat (assertion) tartalmaznak; ezek ellenőrzik valamilyen feltétel teljesülését (például az assertEquals azt, hogy a két argumentuma megegyezik). Ha a feltétel nem teljesül, a teszt sikertelen, és a futtatásakor egy hibaüzenetet látunk, hogy melyik ellenőrző állítás hiúsult meg (az adott tesztben szereplő többi ellenőrzésre ilyenkor nem kerül sor). Ha minden ellenőrzés sikeres, maga a teszt is sikeres.
thread_title:  A tesztmodul felépítése 

message: A tesztet kétféleképpen lehet futtatni: a modul szerkesztésekor megjelenő debug konzolból a require('Module:SUT/tests').run() paranccsal (ilyenkor a hibaüzenetek is a konzolban jelennek meg), vagy sablonként az {{#invoke:Module:SUT/tests|run}} paranccsal (ilyenkor egy táblázatként jelenik meg; lehetőség van tömörebb megjelenítésre is a {{#invoke:Module:SUT/tests|run|displayMode=short}} paraméterezéssel).
thread_title:  A teszt futtatása 

message: === hibaüzenetek ===
Minden ellenőrzés opcionális utolsó paraméterként elfogad egy üzenetet is, ami meg fog jelenni, ha az ellenőrzés sikertelen.
 
=== assertTrue, assertFalse ===
Azt ellenőrzik, hogy a vizsgált állítás igaz ill. hamis-e.
self:assertTrue(2 + 2 == 4)
 
=== assertEquals, assertDeepEquals ===
A paraméterek egyenlőségét vizsgálja. Hagyományosan az első paraméter az ismert eredmény, a második a vizsgált függvényhívás.
self:assertEquals(4, calculator.add(2, 2))
As assertDeepEquals táblák egyenlőségének a vizsgálatára is alkalmas.
 
=== assertTemplateEquals ===
Egy sablonhívás eredményét vizsgálja.
self:assertTemplateEquals(4, 'add', {2, 2}) -- akkor igaz, ha {{add|2|2}} értéke 4
 
=== assertResultEquals ===
Tetszőleges wikikód (tipikusan egy modulhívás) kimenetét vizsgálja.
self:assertResultEquals(4, '{{#invoke:Calculator|add|2|2}}')
 
=== assertSameResult ===
Két wikikód kimenetét hasonlítja össze; hasznos lehet egy sablon lecserélésénél annak ellenőrzésére, hogy az új sablon ugyanúgy viselkedik-e.
self:assertSameResult('{{add|2|2}}', '{{#invoke:Calculator|add|2|2}}')
thread_title:  Ellenőrzések 

message: Minden ellenőrzés opcionális utolsó paraméterként elfogad egy üzenetet is, ami meg fog jelenni, ha az ellenőrzés sikertelen.
thread_title:  hibaüzenetek 

message: Azt ellenőrzik, hogy a vizsgált állítás igaz ill. hamis-e.
self:assertTrue(2 + 2 == 4)
thread_title:  assertTrue, assertFalse 

message: A paraméterek egyenlőségét vizsgálja. Hagyományosan az első paraméter az ismert eredmény, a második a vizsgált függvényhívás.
self:assertEquals(4, calculator.add(2, 2))
As assertDeepEquals táblák egyenlőségének a vizsgálatára is alkalmas.
thread_title:  assertEquals, assertDeepEquals 

message: Egy sablonhívás eredményét vizsgálja.
self:assertTemplateEquals(4, 'add', {2, 2}) -- akkor igaz, ha {{add|2|2}} értéke 4
thread_title:  assertTemplateEquals 

message: Tetszőleges wikikód (tipikusan egy modulhívás) kimenetét vizsgálja.
self:assertResultEquals(4, '{{#invoke:Calculator|add|2|2}}')
thread_title:  assertResultEquals 

message: Két wikikód kimenetét hasonlítja össze; hasznos lehet egy sablon lecserélésénél annak ellenőrzésére, hogy az új sablon ugyanúgy viselkedik-e.
self:assertSameResult('{{add|2|2}}', '{{#invoke:Calculator|add|2|2}}')
thread_title:  assertSameResult