Модуль:UnitTests/Документация
Этот модуль упрощает создание юнит-тестов для модулей Lua.
Добавьте следующий код на страницу модуля Модуль:name/testcases
:
local tests = require('Module:UnitTests')
function tests:test_example()
--[[ here be the tests ]]
end
return tests
Затем добавьте следующий код на страницу документации Модуль:name/testcases/Документация
:
{{#invoke:name/testcases|run_tests}}
Описание функций и параметров править
Tests should be written as Lua methods whose names start with lua
. The lua
object contains the following methods, which may be called from the method:
preprocess_equals(text, expected, options)
- Сравнивает значение и ожидаемый результат
text
— значениеexpected
— ожидаемый результат.
- Сравнивает значение и ожидаемый результат
preprocess_equals_many(prefix, suffix, cases, options)
- Сравнивает несколько результатов вызова теста, добавляя префикс и суффкс
prefix
— префиксsuffix
— суффиксcases
— массив из двух элементовoptions
— опции
- значение
- ожидаемый результат.
- Сравнивает несколько результатов вызова теста, добавляя префикс и суффкс
preprocess_equals_preprocess(text1, text2, options)
- Сравнивает два значения
text1
— первое значениеtext2
— второе значениеoptions
— опцияnowiki
для подавления препроцессора для результата
- Сравнивает два значения
preprocess_equals_preprocess_many(prefix1, suffix1, prefix2, suffix2, cases, options)
- Сравнивает несколько результатов вызова теста, добавляя префикс и суффкс
prefix1
— префикс для первого значенияprefix2
— префикс для второгозначенияsuffix1
— суффикс первого значенияsuffix2
— суффикс второго значенияcases
— массив из двух значенийoptions
— опции
- Сравнивает несколько результатов вызова теста, добавляя префикс и суффкс
equals(name, actual, expected, options)
- Формирует строку таблицы сравнения два значения
name
— название теста (1-я ячейка строки таблицы). Если вместо строки нужно передать таблицу, то следует использовать функциюequals_deep
.
- Формирует строку таблицы сравнения два значения
equals_deep(name, actual, expected, options)
- Сравнивает два значения, каждое из которых таблица
name
— название тестаactual
— таблица значенийexpected
— таблица ожидаемых результатов
- Сравнивает два значения, каждое из которых таблица
heading(string)
- Формирует подвал таблицы, добавляется последней строкой.
iterate
- Принимает таблицу в первом параметре. Итарационно обходит таблицу. Если элемент таблицы тоже таблица, то вызывает функцию в контексте этого массива. Если элемент строка, то для неё вызывается
self:heading()
. - Существует в двух вариантах:
iterate(array, function_name)
- Где,
function_name
— строка с именем тестовой функции вself
. Например,self:iterate({ { "a", "b" }, { "c", "d" } }, "check")
вызоветself:check("a", "b")
иself:check("c", "d")
. Методself:check()
должен быть определён в коде теста отдельно.
- Где,
iterate(array, func)
- Также, но принимает вторым аргументом функцию. Например,
self:iterate( { { "a", "b" }, { "c", "d" } }, check)
вызоветcheck(self, "a", "b")
andcheck(self, "c", "d")
.
- Также, но принимает вторым аргументом функцию. Например,
- Принимает таблицу в первом параметре. Итарационно обходит таблицу. Если элемент таблицы тоже таблица, то вызывает функцию в контексте этого массива. Если элемент строка, то для неё вызывается
Параметр options
должен быть передан как таблица или пропущен. На данный момент сущестуют следующие опции
nowiki
— подавляет вызов препроцессора значений, как будто тег <nowiki> обернут вокруг значений.comment
— комментарий добавляемый в последнюю справа ячейку строки таблицы.display
— функция формирующая текст фактически отображаемый в таблице. Используется в тестах модулей транскрипции для правильного отображения шрифта МФА.show_difference
— если заданоtrue
(или любое другое истинное значение, кроме функции), в случае неудачных тестов первый неверный символ будет выделен красным (то есть первый символ в «фактической» строке, который отличается от соответствующего символа в «ожидаемой» строке); если это функция, то символ будет выделен с помощью функции. (В настоящее время доступна только в функцииequals
. Подсветка выделит диакритические знаки вместе с символами, за которыми они помещены.)
Это страница документации Модуль:UnitTests.