Detta är dokumentationssidan för Modul:UnitTests

UnitTests erbjuder funktioner för test av Lua-funktioner genom att använda require. Se en:Wikipedia:Lua#Unit_testing för detaljer. Following is a sample from Modul:HelloWorld/testcases:

-- Unit tests for [[Modul:HelloWorld]]. Gå till diskussionssidan för att exekvera testerna.
local p = require('Modul:UnitTests')
 
function p:test_hej()
    self:preprocess_equals('{{#invoke:HelloWorld | hej}}', 'Hello World!')
end
 
return p

Diskussionssidan Moduldiskussion:HelloWorld/testcases exekverar koden med {{#invoke: HelloWorld/testcases | run_tests}}. Testfunktioner som test_hej ovan måste börja med "test".

Procedurer redigera

run_tests redigera

  • run_tests(differs_at): Kör alla testfall. Om "differs_at=1" anges så läggs en kolumn till som visar den första teckenposition där det förväntade och det erhållna resultatet skiljer sig. Används normalt på en diskussionssida till testfallen för en modul.
    {{#invoke:HelloWorld/testcases|run_tests}}

preprocess_equals redigera

  • preprocess_equals(text, expected): Anger en wikitext som ska pre-processas och det förväntade resultatet. Script och mallar kan anropas på samma sätt som de skulle göras på en artikelsida.
    self:preprocess_equals('{{#invoke:HelloWorld | hej}}', 'Hello World!')

preprocess_equals_many redigera

  • preprocess_equals_many(prefix, suffix, cases): Utför en följd av anrop av preprocess_equals() med en angiven mängd par av wikitexter och förväntade resultat. Givna prefix och suffix läggs automatiskt till varje wikitext.
    self:preprocess_equals_many('{{#invoke:HelloWorld | addera |', '}}', {
        {'2|3', '5'},
        {'-2|2', '0'},
    })

preprocess_equals_preprocess redigera

  • preprocess_equals_preprocess(text, expected): Avgör om två givna wikitexter resulterar i samma värde när de exekveras. Användbart för att jämföra script med befintliga mallar.
    self:preprocess_equals_preprocess('{{#invoke:HelloWorld | hej}}', '{{Hello}}')

preprocess_equals_preprocess_many redigera

  • preprocess_equals_preprocess_many(prefix, suffix, cases): Utför en följs av anrop av preprocess_equals_preprocess() för en given uppsättning par. Angivna prefix/suffix för båda argumenten läggs automatiskt till. Om den andra delen saknas i något fall så används den första delen.
    self:preprocess_equals_preprocess_many('{{#invoke:Foo | spellnum |', '}}', '{{spellnum', '}}', {
        {'2'}, -- equivalent to {'2','2'},
        {'-2', '-2.0'},
    })

equals redigera

  • equals(name, actual, expected): Jämför om ett beräknat och ett förväntat värde är lika (enligt ==-operatorn). Användbart för testning av moduler som är gjorda för att användas av andra moduler snarare än genom anrop med #invoke.
    self:equals('Simple addition', 2 + 2, 4)

equals_deep redigera

  • equals_deep(name, actual, expected): Fungerar som equals, men hanterar tabeller genom att göra en "djup jämförelse". Inget värde får innehålla en cirkulär referens, eftersom de ej hanteras av nuvarnade implementation och kan resultera i oändliga loopar.
    self:equals_deep('Table comparison', createRange(1,3), {1,2,3})

Se även redigera