Модуль:UnitTests/doc

Материал из Народные Сказки
Версия от 00:34, 25 июня 2023; ru>Andras
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Это страница документации Модуль:UnitTests.

UnitTests — модуль для проведения юнит-тестов других модулей.

Пример использования для модуля en:Module:Bananas

Создать подстраницу модуля en:Module:Bananas/tests:

-- Unit tests for [[Module:Bananas]]. Click talk page to run tests.
local p = require('Module:UnitTests')

function p:test_hello()
    self:preprocess_equals('{{#invoke:Bananas | hello}}', 'Hello, world!')
end

return p

На странице en:Module talk:Bananas/tests вставить: {{#invoke: Bananas/tests | run_tests}}

На странице en:Module talk:Bananas/tests можно будет увидеть результат выполнения юнит тестов.

Методы модуля

  • run_tests(differs_at): запустить тесты. Если указано «differs_at=1», то будет добавлена колонка с указанием позиции первого символа, в котором результат отличается от ожидаемого. Обычно используется на странице обсуждения теста.
    {{#invoke:Bananas/tests|run_tests}}
  • preprocess_equals(text, expected, [options]): выполнить тест. Аргументы: text — фрагмент викитекста для тестирования; expected — ожидаемый результат. Если options.nowiki=true, то оба результата будут парситься при помощи mw.text.nowiki.
    self:preprocess_equals('{{#invoke:Bananas | hello}}', 'Hello, world!')
  • preprocess_equals_many(prefix, suffix, cases, [options]): выполнить серию тестов. Аргументы: prefix, suffix — дополнение перед/после викитекста в тестах; cases — список тестов.
    self:preprocess_equals_many('{{#invoke:BananasArgs | add |', '}}', {
        {'2|3', '5'},
        {'-2|2', '0'},
    })
  • preprocess_equals_preprocess(text, expected, [options]): сравнивает результат двух фрагментов викитекста. Обычно используется для проверки идентичности обычного шаблона и шаблона со скриптом.
    self:preprocess_equals_preprocess('{{#invoke:Bananas | hello}}', '{{Hello}}')
  • preprocess_equals_preprocess_many(prefix1, suffix1, prefix2, suffix2, cases, [options]): то же, что и preprocess_equals_preprocess, но для серии тестов. Аргументы те же, что и в preprocess_equals_many.
    self:preprocess_equals_many('{{#invoke:Foo | spellnum |', '}}', '{{spellnum', '}}', {
        {'2'}, -- equivalent to {'2','2'},
        {'-2', '-2.0'},
    })
  • preprocess_equals_sandbox_many(module, function, cases, [options]): несколько раз вызывает внутреннюю функцию preprocess_equals_compare() на серии тестов аналогично preprocess_equals_many. Сравниваются три версии: актуальная, /песочница и ожидаемый результат теста.
    self:preprocess_equals_sandbox_many('{{#invoke:Example', 'hello_to', {
        {'John', 'Hello, John!'},
        {'Jane', 'Hello, Jane!'},
    },{nowiki=1})
  • equals(name, actual, expected, [options]): вычислить значение и сравнить с ожидаемым результатом. Обычно используется для тестирования модулей, вызывающих другие модули, без использования #invoke.
    self:equals('Simple addition', 2 + 2, 4)