Module:UnitTests/Documentation
Apparence
Ce module est destiné à faciliter la mise en place de test unitaire d'autres modules ou de modèles. Il faut créer un module qui génère les tests, et une page qui affiche les résultats.
Voici un exemple simple : Module:Banane/Test, test unitaire du module:Banane :
-- Test unitaire pour [[Module:Banane]]. Cliquer sur « Discussion » pour voir le résultat du test.
local p = require('Module:UnitTests')
function p:test_hello()
self:preprocess_equals('{{#invoke:Banane | hello}}', 'Hello, world!')
end
return p
Le résultat est affiché sur Discussion module:Banane/Test par le code {{#invoke: Banane/Test | run_tests}}
.
Les noms des fonctions de tests comme test_hello()
ci-dessus doivent commencer par « test ». Elles sont affichées par ordre alphabétique.
Utilisation
[modifier le code]Fonctions exportables :
run_tests( frame )
– exécute toutes les fonctions commençant par « test » et affiche les résultats en tableau. Le paramètre differs_at=1 ajoute une colonne avec la position du premier caractère qui diverge du résultat prévu.
Methods (à traduire)
[modifier le code]run_tests
[modifier le code]run_tests(differs_at)
: Runs all tests.
If "differs_at=1" is specified, a column will be added showing the first character position where the expected and actual results differ. Normally used on talk page of unit tests.
{{#invoke:Bananas/testcases|run_tests}}
preprocess_equals
[modifier le code]preprocess_equals(text, expected)
: Gives a piece of wikitext to preprocess and an expected resulting value. Scripts and templates can be invoked in the same manner they would be in a page.
self:preprocess_equals('{{#invoke:Bananas | hello}}', 'Hello, world!')
preprocess_equals_many
[modifier le code]preprocess_equals_many(prefix, suffix, cases)
: Performs a series of preprocess_equals() calls on a set of given pairs. Automatically adds the given prefix and suffix to each text.
self:preprocess_equals_many('{{#invoke:BananasArgs | add |', '}}', {
{'2|3', '5'},
{'-2|2', '0'},
})
preprocess_equals_preprocess
[modifier le code]preprocess_equals_preprocess(text, expected)
: Gives two pieces of wikitext to preprocess and determines if they produce the same value. Useful for comparing scripts to existing templates.
self:preprocess_equals_preprocess('{{#invoke:Bananas | hello}}', '{{Hello}}')
preprocess_equals_preprocess_many
[modifier le code]preprocess_equals_preprocess_many(prefix, suffix, cases)
: Performs a series of preprocess_equals_preprocess() calls on a set of given pairs. The prefix/suffix supplied for both arguments is added automatically. If in any case the second part is not specified, the first part will be used.
self:preprocess_equals_preprocess_many('{{#invoke:Foo | spellnum |', '}}', '{{spellnum', '}}', {
{'2'}, -- equivalent to {'2','2'},
{'-2', '-2.0'},
})
equals
[modifier le code]equals(name, actual, expected)
: Gives a computed value and the expected value, and checks if they are equal according to the == operator. Useful for testing modules that are designed to be used by other modules rather than using #invoke.
self:equals('Simple addition', 2 + 2, 4)
equals_deep
[modifier le code]equals_deep(name, actual, expected)
: Like equals, but handles tables by doing a deep comparison. Neither value should contain circular references, as they are not handled by the current implementation and may result in an infinite loop.
self:equals_deep('Table comparison', createRange(1,3), {1,2,3})
Voir aussi
[modifier le code]